【问题标题】:Use JNA to get Local machine Certificate使用 JNA 获取本地机器证书
【发布时间】:2018-12-14 01:03:57
【问题描述】:

我正在尝试从本地计算机 Windows 商店获取证书。想要得到的是路径“Certificates(Local Computer) --> Personal --> Certificates”中的证书。

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

 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");

谁能给我一个线索?

【问题讨论】:

    标签: java certificate x509certificate keystore jna


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-01
      • 1970-01-01
      • 2019-03-19
      相关资源
      最近更新 更多