Java SSL:服务器和客户端是否必须拥有相同密钥库文件的副本?

时间:2013-05-24 11:41:50

标签: java ssl keystore

我是一个新手,我只是想知道,在一个ssl应用程序中,理想情况下在真实世界的情况下,服务器和客户端是否都有完全相同的.keystore文件的副本,否则这将是一个安全风险。如果客户端没有实际密钥库文件的副本,还有其他方法吗?

2 个答案:

答案 0 :(得分:3)

不,客户端和服务器不需要相同的密钥库(通常它们不一样),但如果它们是相同的,它将起作用。

SSL连接依赖于握手阶段的非对称公钥/私钥加密,一旦建立连接,就切换到对称密钥加密。

基础知识是:

  • 服务器将其公钥发送给客户端。
  • 客户端使用服务器公钥响应加密对称密钥。
  • 只有服务器具有解密对称密钥所需的私钥。
  • 客户端和服务器然后使用symetric密钥加密它们之间传递的所有数据。

就像我说的基础知识一样,关于检查证书以及握手的工作方式还有一些问题,如here所述。

答案 1 :(得分:1)

绝对不

两个实体使用相同的私钥和证书将是重大安全漏洞。私钥应该是私有的,并且证书旨在对应于拥有该私钥的唯一标识。任何违反该原则的行为都是一个基本的安全错误。