java - 在 Java 中访问 keystore 证书

标签 java applet keystore sign

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

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

我是 Java 编程的新手(主要是 .NET 网络开发人员),也许我错过了什么。感谢您的帮助。

最佳答案

此处记录:Java Cryptography Architecture Oracle Providers Documentation for JDK 8

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

The Apple provider implements a java.security.KeyStore that provides access to the Mac OS X Keychain. The following algorithms are available in the Apple provider:

Engine: KeyStore
Algorithm Name(s): KeychainStore

因此,换句话说:您通过使用名称“KeychainStore”获得 Mac OS X 钥匙串(keychain)的 KeyStore 对象:

KeyStore ks = KeyStore.getInstance("KeychainStore");

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

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());
}

顺便说一句,浏览器供应商和 Oracle 正在逐步淘汰 applet 的浏览器插件。 Java Web Start 可能是一个替代方案。

关于java - 在 Java 中访问 keystore 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38746288/

相关文章:

java - 开始时的其他 Activity

java - 在 Windows 上 - 哪里有 mqji.properties 供我使用?

Java JApplet 将不再显示在任何浏览器中

tomcat - linux 中的 keytool 导入证书 java.util.IllegalFormatConversionException

java - 以编程方式将 .cer 证书导入 keystore

java - getConnection() 和 ResultSet 中的错误

java - 如何更改testng报告的css?

供应商 Applet 中的 Java 区域设置问题

java - 如何绕过父类paint方法的调用

java - 使用 java 代码将 X.509 证书存储到 keystore 中