我正在尽我最大的努力来理解相互 SSL。我找不到一个很好的答案,就是为什么您需要在客户端上创建密钥对,而不是仅仅提供公共客户端证书。
到目前为止,我的理解如下(非常简化):
常规SSL:
相互SSL:
我不明白为什么我必须在客户端使用的密钥存储中包含整个密钥对(也包括私有部分)。在流程中客户的私钥在哪里使用?
发布于 2019-07-09 18:06:38
服务器拥有一个密钥对,并发送公共部分(证书),因此客户端可以使用该公钥加密消息,这样它们就可以共享对称密钥,并最终保护所有通信。
这不是服务器证书的要点,使用现代密钥交换方法(即Diffie-Hellman),证书根本不涉及密钥交换。您所描述的只适用于过时的RSA密钥交换。
证书的要点将用于身份验证。身份验证是指服务器证明它拥有所提供的证书,然后客户端验证证书是否符合其期望,即由可信CA颁发的证书、预期的subject/SAN、未过期等。
所有权证明是通过签署某些数据(至少部分由对等方(即客户端)提供)来完成的,私钥与证书中的公钥匹配。然后,对等方(客户端)可以使用证书的公钥验证此签名,如果验证通过,则对方(服务器)显然拥有秘密私钥,这意味着它拥有证书。
对于用于相互身份验证的客户端证书,过程完全相同,仅用于切换角色。这就是客户端需要私钥的原因。
https://stackoverflow.com/questions/56955948
复制相似问题