我们可以在密钥库中加载多个证书和密钥吗?

Jay*_*Jay 30 java ssl certificate keystore

我们可以在密钥库中加载多个证书和密钥吗?

是否始终只需要加载对(即证书和密钥)?

如果密钥库具有多个证书和密钥,当Java SSL尝试将连接建立为服务器时,将选择哪个证书和密钥?

Bru*_*uno 17

虽然这取决于KeyStore类型,但通常可以在一个商店中存储多个私钥和证书.

基于Java的服务器使用哪种密钥和证书组合将取决于应用程序的实现方式.许多应用程序允许您使用别名选择给定的证书.KeyStore中的密钥和证书getter 接受一个alias参数来做出这个选择.通常,如果未在配置中指定,则应用程序或框架将使用基于KeyStore.aliases()枚举找到的第一个合适的应用程序或框架.

例如,Tomcat keyAlias在其Connector配置中使用该属性:

keyAlias:用于密钥库中的服务器证书的别名.如果未指定,将使用密钥库中读取的第一个密钥.

关于密钥对,一些密钥库(再次,取决于类型)可以用于存储SecretKeys(例如DES),即共享密钥,以及公钥 - 私钥对.

  • 谢谢你的回答。所以,基本上在Java SSL中,如果想使用证书,那么首先我必须通过Keytool或以编程方式将它们加载到KeyStore中,然后从密钥存储中读取证书和私钥条目并将它们传递给SSL?但是,哪个 API 允许我向 SSL 服务器指定应使用哪个证书? (2认同)
  • 除非您使用的框架为您完成,否则您需要配置一个`KeyManager`并从中初始化和`SSLContext`(然后使用该上下文来构建套接字工厂).以下是[KeyManager指定别名]的示例(http://code.google.com/p/jsslutils/source/browse/tags/release-1.0.5/jsslutils/src/main/java/org/jsslutils /sslcontext/keymanagers/FixedServerAliasKeyManager.java). (2认同)