使用JNA获取本地计算机证书

我正在尝试从本地计算机Windows商店获取证书。 想要获得的是“证书(本地计算机) – >个人 – >证书”中的证书。

我使用此代码访问路径“证书 – 当前用户 – >个人 – >证书”中的证书

NativeLibrary crypt32 = NativeLibrary.getInstance("Crypt32"); Function functionCertOpenSystemStore = crypt32.getFunction("CertOpenSystemStoreA"); Object[] argsCertOpenSystemStore = new Object[] { 0, "MY"}; HANDLE h = (HANDLE) functionCertOpenSystemStore.invoke(HANDLE.class, argsCertOpenSystemStore); 

有关如何从“证书(本地计算机) – >个人 – >证书”获取证书的任何想法?

我正在尝试使用JNA,因为我读取的不可能从Java访问本地机器证书。 我唯一得到的就是使用密钥库获取“当前用户”证书,如下所示:

 KeyStore ks = KeyStore.getInstance("Windows-MY", "SunMSCAPI"); 

我也试过这个:

 KeyStore ks = KeyStore.getInstance("Windows-ROOT", "SunMSCAPI"); 

有人能给我一个线索吗?

是的,您可以使用wcsa实用程序 ,它将拦截对Windows Crypto API的调用,并允许您访问本地计算机凭据。 这当然是对十年前报道的真正问题JDK-6782021的黑客攻击。 但它确实让您以非常轻松的方式访问本地机器证书!