服务器已从http更改为https。我们使用keytool来保存服务器CA,而不是修改客户端代码(当然是http的主机现在是https)。当我使用keytool时,我看到了所有存储CA的列表(大约100件)。
那么JRE如何知道使用哪个CA?这背后的故事是什么,比如为什么当JRE配置了CA时,客户端代码可以保持不变?
感谢。
答案 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连接此)