密钥库和信任库对于与SSL证书的通信都很重要,也是必不可少的。两者在结构和结构方面非常相似,因为两者都由关键工具命令管理。
信任库用于存储来自受信任证书颁发机构 (CA) 的证书,用于验证服务器在 SSL 连接中提供的证书。另一方面,Keystore 用于存储私钥和自己的身份证书,以进行识别以进行验证。
在 SSL 握手中,Truststore 的工作是验证凭据,而 Keystore 的工作是提供这些凭据。这些是 Truststore 和 Keystore 之间最重要的区别,但不是唯一的区别。这些差异在 Java 中各不相同,它们如下:
信任库由信任管理器使用,密钥库由密钥管理器使用;它们都执行不同的功能。
密钥库包含私钥,仅当服务器在 SSL 连接上运行时才需要,而信任库存储公钥和证书颁发机构颁发的证书。
要指定密钥库或信任库的路径,我们需要在 Java 中使用不同的扩展。(用于密钥库的 Djavax.net.ssl.keyStore 和用于信任库的 -Djavax.net.ssl.trustStore。
两者的密码也存在差异(即,对于密钥库,它由以下扩展名 Djavax.net.ssl.keyStorePassword 提供,对于信任库,由 Djavax.net.ssl.trustStorePassword 提供)。
密钥库包含主机的一个私钥,而信任库包含零个私钥。
可以使用 keytool 实用程序从 Java 密钥库中列出、删除和添加证书。几乎所有的 SSL 客户端都可以访问信任库。
密钥库和信任库的安全注意事项
密钥库包含私钥,而信任库则不包含私钥。密钥库的安全性是严格而严格的。特别–
Hadoop SSL(安全套接字层)要求信任库和信任库密码必须以明文形式存储在每个人都可以轻松读取的配置文件中。
密钥库和密钥密码以明文形式存储在只有相应组的成员才能读取的文件中。
由于信任存储不包含任何私有和敏感信息,因此整个集群只有一个信任存储就足够了。
但是,Truststore 和 Keystore 的密码不应相同,因为 Truststore 的密码存储在明文文件中,并且对所有人都可见,这是必不可少的信息。如果密钥库使用相同的密码,则安全性将容易受到攻击,并可能受到恶意方和黑客的攻击。
创建 Trusutstores
如果使用默认信任库,则需要将证书颁发机构 (CA) 添加到信任库或从信任库中删除它们。如果要创建自定义信任库,则必须通过将受信任的证书导入到新的信任库中来构建信任库。创建信任库时,必须创建/选择密码,并且对于给定服务,密码应相同。
密钥库的目的是通过使用基于密码的算法来保护隐私和完整性。这些密钥是保密的,以确保它们的安全并免受不需要的第三方的侵害,并且只有拥有密码的人才能访问。