使用Java访问密钥库证书

时间:2016-08-03 14:21:05

标签: java applet keystore sign

我正在开发一个用于在Web浏览器中播放PDF文档的Java小程序。小程序需要能够与Windows和Mac OS一起使用。 applet将在用户的计算机上显示已安装证书的列表,并让用户选择其中一个进行签名。

我找到了如何使用" Windows-MY"从Windows密钥库读取证书的示例。标识符,但我找不到使用Java for Mac OS的证书的任何示例。如何从Mac上的密钥库中读取证书列表?

我是Java编程的新手(主要是.NET Web开发人员),也许我想念一些东西。谢谢你的帮助。

1 个答案:

答案 0 :(得分:3)

此处记录了这些内容:Java Cryptography Architecture Oracle Providers Documentation for JDK 8

您应该阅读整个页面,但问题的相关部分位于底部:

  

Apple提供程序实现了一个提供的java.security.KeyStore   访问Mac OS X Keychain。 Apple提供商提供以下算法:

     

引擎:KeyStore
  算法名称:KeychainStore

因此,换句话说:您使用名称" KeychainStore "

获取Mac OS X钥匙串的KeyStore对象
KeyStore ks = KeyStore.getInstance("KeychainStore");

之后它与每个其他密钥库类型基本相同。例如,列出所有证书及其别名:

ks.load(null, null);
Enumeration<String> en = ks.aliases();
while (en.hasMoreElements()) {
    String aliasKey = en.nextElement();
    X509Certificate c = (X509Certificate) ks.getCertificate(aliasKey);
    System.out.println("alias: " + aliasKey);
    System.out.println("cert:" + c.getSubjectX500Principal().toString());
}
BTW,浏览器供应商和甲骨文正逐步淘汰applet的浏览器插件。 Java Web Start可能是另一种选择。