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

Java 使用JNA获取本地计算机证书,java,certificate,x509certificate,keystore,jna,Java,Certificate,X509certificate,Keystore,Jna,我正在尝试从本地计算机Windows应用商店获取证书。a想要获得的是“证书(本地计算机)-->个人-->证书”模式中的证书 我使用此代码访问路径“证书-当前用户-->个人-->证书”中的证书 NativeLibrary crypt32 = NativeLibrary.getInstance("Crypt32"); Function functionCertOpenSystemStore = crypt32.getFunction("CertOpenSystemStoreA"); Obj

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

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

 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");
有人能给我一个线索吗?

是的,你可以使用,它将拦截对Windows Crypto API的调用,并让你访问本地计算机凭据。这当然是对十年前报道的真正问题的一种破解。但它确实让你以一种非常轻松的方式访问本地计算机证书