keytool如何知道使用哪个CA.

时间:2016-08-26 03:47:21

标签: java keytool

服务器已从http更改为https。我们使用keytool来保存服务器CA,而不是修改客户端代码(当然是http的主机现在是https)。当我使用keytool时,我看到了所有存储CA的列表(大约100件)。

那么JRE如何知道使用哪个CA?这背后的故事是什么,比如为什么当JRE配置了CA时,客户端代码可以保持不变?

感谢。

1 个答案:

答案 0 :(得分:0)

我试图回答你提出的基本问题。 Java和Keytool通过查阅JRE附带的名为 cacerts 的特殊文件知道要信任哪些CA,并将其放在<JRE_HOME>/lib/security中。

这种文件通常称为KeyStore或TrustStore。

&#34;创建者&#34;此文件默认 JRE(例如Oracle)并包含要信任的证书颁发机构证书列表(通常在每个版本中更新)。

与浏览器的相同流程没有什么不同。

至于背后的故事,如果我理解正确,我们正在谈论PKI(公钥基础设施),在你的情况下,非常粗略地意味着当你的 JRE密钥库更新时新的CA证书,然后提供由该CA提供(通常是出售)的证书的实体(例如SSL站点,小应用程序等)现在基本上是有效且可信的,因为现在受信任的第三方(新CA)可以保证(通过加密和数字签名的方式)&#34;你是有效的你&#34;在数字场景中。

另外值得注意的是,可以指示Keytool使用带有-keystore <keystore_path>命令行选项的用户定义密钥库(甚至JVM也可以通过系统属性配置特定的非默认信任库以进行SSL连接此)