密钥存储库和信任存储库之间的区别是什么?
当前回答
密钥存储库包含私钥,以及具有相应公钥的证书。
信任存储库包含来自您希望与之通信的其他方的证书,或来自您信任以识别其他方的证书颁发机构的证书。
其他回答
密钥存储库包含私钥,以及具有相应公钥的证书。
信任存储库包含来自您希望与之通信的其他方的证书,或来自您信任以识别其他方的证书颁发机构的证书。
密钥存储库用于存储特定程序应提供给双方(服务器或客户端)进行验证的私钥和身份证书。
Truststore用于存储来自认证机构(CA)的证书,这些证书用于在SSL连接中验证服务器提供的证书。
本文供参考https://www.educative.io/edpresso/keystore-vs-truststore
密钥存储库包含私有密钥。如果你是,你才需要这个 服务器,或者服务器是否需要客户端身份验证。 信任存储库包含要信任的CA证书。如果你的服务器 证书由认可的CA(默认信任库)签署 将会信任它(因为它已经 信任可信赖的ca),所以你不需要建立自己的, 或者从JRE中添加任何东西。
源
您可能还会对Sun的介绍感兴趣,这是标准JSSE文档的一部分:
http://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#Stores
通常,信任存储区仅用于存储公钥,用于验证目的,例如使用X.509身份验证。出于可管理性的目的,管理员或开发人员通常会将两者合并到一个存储中。
在SSL握手中,trustStore的目的是验证凭据,keyStore的目的是提供凭据。
密钥存储库
Java中的keyStore存储与其公钥相对应的私钥和证书,如果您是SSL服务器或SSL需要客户端身份验证,则需要。
信任存储库
TrustStore存储来自第三方的证书,您的Java应用程序通信或由CA(证书颁发机构,如Verisign, Thawte, Geotrust或GoDaddy)签署的证书,这些证书可用于识别第三方。
TrustManager
TrustManager决定是否应该信任远程连接,即远程方是否声称是谁,KeyManager决定在SSL握手期间应该将哪些身份验证凭证发送到远程主机进行身份验证。
如果您是SSL服务器,您将在密钥交换算法中使用私钥,并将与您的公钥对应的证书发送给客户端,该证书是从keyStore中获取的。在SSL客户端,如果它是用Java编写的,它将使用存储在trustStore中的证书来验证服务器的身份。SSL证书通常以.cer文件的形式出现,通过使用任何密钥管理工具(例如keytool)添加到keyStore或trustStore中。
来源:http://javarevisited.blogspot.ch