使用 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的黑客攻击。但它确实可以让您以非常轻松的方式访问本地计算机证书!

最新更新