在Java中访问密钥库证书
问题描述:
我正在开发一个用于在Web浏览器中唱歌PDF文档的Java小程序。该小程序需要能够与Windows和Mac OS兼容。该小程序将在用户的计算机上显示已安装证书的列表,并让用户选择其中一个进行签名。在Java中访问密钥库证书
我发现的例子如何读取使用的“Windows-MY”标识从Windows密钥库证书,但我找不到任何例如在Java证书用于Mac OS工作。如何从Mac上的密钥库读取证书列表?
我是Java编程新手(主要是.NET Web开发人员),也许我会错过一些东西。感谢您的任何帮助。
答
这是记录在这里:Java Cryptography Architecture Oracle Providers Documentation for JDK 8
你应该读整页,但对于你的问题相关的部分是在底部:
苹果公司的供应商实现了java.security.KeyStore中的那提供 访问Mac OS X钥匙串。下面的算法在苹果供应商可供选择:
引擎:密钥库
算法名称(S):KeychainStore
所以,换句话说:你获得了Mac OS X钥匙串KeyStore对象通过使用名称“KeychainStore”:
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,浏览器厂商和Oracle正在逐步淘汰的小应用程序的浏览器插件。 Java Web Start可能是另一种选择。