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

2022-09-01 07:51:55

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

是否总是需要只加载对(即证书和密钥在一起)?

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


答案 1

尽管这取决于 KeyStore 类型,但通常,您可以在单个存储中存储多个私钥和证书。

用于基于 Java 的服务器的密钥和证书组合将取决于应用程序的实现方式。许多应用程序允许您使用别名选择给定的证书。密钥库中的密钥和证书获取器采用一个参数来做出此选择。通常,当配置中未指定时,应用程序或框架将使用它根据枚举找到的第一个合适的应用程序。aliasKeyStore.aliases()

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

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

关于密钥对,一些密钥库(同样,取决于类型)可用于存储 s(例如 DES),即共享密钥,以及公钥 - 私钥对。SecretKey


答案 2

您可以拥有一个密钥库,其中包含任意数量的证书和密钥。

如果客户机用作其信任库的密钥库中有多个证书,那么将检查所有证书,直到找到一个合适的证书。您可以查看预安装的证书,它们位于 /lib/security/cacerts 中。它只是根 CA 证书的大量集合。

关于我不知道的钥匙。我认为客户端使用的密钥由与服务器提供的证书相同的CA签名,如果有多个,则使用第一个。但我不能肯定地说。