我正在开发一个用于在Web浏览器中播放PDF文档的Java小程序。小程序需要能够与Windows和Mac OS一起使用。 applet将在用户的计算机上显示已安装证书的列表,并让用户选择其中一个进行签名。
我找到了如何使用" Windows-MY"从Windows密钥库读取证书的示例。标识符,但我找不到使用Java for Mac OS的证书的任何示例。如何从Mac上的密钥库中读取证书列表?
我是Java编程的新手(主要是.NET Web开发人员),也许我想念一些东西。谢谢你的帮助。
答案 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可能是另一种选择。