java - keystore 类型 : which one to use?

标签 java security ssl jsse

通过查看我的 JRE 的文件 java.security,我看到默认使用的 keystore 类型设置为 JKS . Here ,有一个可以使用的 keystore 类型的列表。

是否有推荐的 keystore 类型?不同 keystore 类型的优缺点是什么?

最佳答案

除了您链接到的标准名称列表中列出的类型之外,还有一些类型。您可以在 cryptographic providers documentation 中找到更多信息.最常见的肯定是 JKS(默认值)和 PKCS12(对于 PKCS#12 文件,扩展名通常为 .p12 或有时为 .pfx).

如果您留在 Java 世界中,JKS 是最常见的。 PKCS#12 不是特定于 Java 的,使用从浏览器备份或来自基于 OpenSSL 的工具(keytool 无法转换 keystore )的证书(带有私钥)特别方便并在 Java 6 之前导入其私钥,因此您必须使用其他工具)。

如果您已有 PKCS#12 文件,直接使用 PKCS12 类型通常会更容易。可以转换格式,但如果您可以直接选择 keystore 类型,则很少需要。

在 Java 7 中,PKCS12 主要用作 keystore 而不是用作 truststore(参见 difference between a keystore and a truststore),因为您没有私钥无法存储证书条目。相比之下,JKS 不要求每个条目都是私钥条目,因此您可以拥有仅包含证书的条目,这对信任存储很有用,您可以在其中存储您信任的证书列表(但您没有他们的私钥)。

这在 Java 8 中有所改变,因此您现在也可以在 PKCS12 存储中拥有仅证书条目。 (有关这些更改和进一步计划的更多详细信息,请参阅 JEP 229: Create PKCS12 Keystores by Default。)

还有一些其他的 keystore 类型,可能不太常用(取决于上下文),包括:

  • PKCS11,用于 PKCS#11 库,通常用于访问硬件加密 token ,但 Sun 提供程序实现也通过它支持 NSS 存储(来自 Mozilla)。
  • BKS,使用 BouncyCaSTLe 提供程序(通常用于 Android)。
  • Windows-MY/Windows-ROOT,如果您想直接访问 Windows 证书存储。
  • KeychainStore,如果你想直接使用 OSX keychain。

关于java - keystore 类型 : which one to use?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36783062/

相关文章:

java - Libgdx设置TextField大小不会改变其大小

php - 内容上的 WordPress esc_html

wcf - 如何在 WCF 服务中使用消息安全性和用户名 clientCredentialType 而无需证书?

ruby-on-rails - 应用 AWS SSL 证书后的负载均衡器健康检查

tomcat - 无法从本地主机建立 SSL 连接

Delphi w Indy 10 : Unable to connect via TLS 1. 2 w SSL "Best Practices"在网络服务器上就位

java - 选择查询星期几?

java - 解决 QR 拼图的算法

java - 如何在相机预览上绘图

java - 在 Android 中隐藏 keystore 密码的最佳方法是什么?