在 Java 中访问密钥库证书

Mar*_*cik 1 java applet sign keystore

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

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

我是 Java 编程的新手(主要是 .NET Web 开发人员),也许我错过了一些东西。感谢您的任何帮助。

Omi*_*ron 5

这在此处记录: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");
Run Code Online (Sandbox Code Playgroud)

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

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());
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,浏览器供应商和 Oracle 正在逐步淘汰小程序的浏览器插件。Java Web Start 可能是另一种选择。