我们可以加载多个证书&密钥库中的密钥?
是否始终只需要加载对(即证书和密钥一起)?
如果密钥存储区有多个证书和密钥,当Java SSL尝试建立连接作为服务器时,哪一个将被选中?
答案 0 :(得分:17)
虽然这取决于KeyStore类型,但通常可以在一个商店中存储多个私钥和证书。
基于Java的服务器使用哪种密钥和证书组合取决于应用程序的实现方式。许多应用程序允许您使用别名名称选择给定的证书。 KeyStore中的密钥和证书获取者使用alias
参数进行此选择。通常,如果未在配置中指定,则应用程序或框架将使用基于KeyStore.aliases()
枚举找到的第一个合适的应用程序或框架。
例如,Tomcat在其Connector configuration中使用keyAlias
属性:
keyAlias:用于服务器的别名 密钥库中的证书。如果不 指定了第一个读取的键 将使用密钥库。
关于密钥对,一些KeyStore(同样,取决于类型)可用于存储SecretKey
(例如DES),即共享密钥,以及公钥 - 私钥对。
答案 1 :(得分:3)
您可以拥有一个包含任意数量证书和密钥的密钥库。
如果客户端使用的密钥库中有多个证书作为其信任库,则会查找所有证书,直到找到适合的证书。您可以查看预安装的证书,它们位于/ lib / security / cacerts中。它只是根CA的证书的大集合。
关于我不知道的钥匙。我认为客户端使用的密钥由与服务器提供的证书相同的CA签名,如果有多个密钥,则使用第一个密钥。但我不能肯定地说。