首页 > 解决方案 > 为什么双向 SSL 需要客户端的密钥对而不仅仅是公共证书?

问题描述

我正在尽我所能理解相互SSL。我无法找到一个好的答案的一个问题是,为什么您需要在客户端上创建一个密钥对,而不是仅仅提供一个公共客户端证书。

到目前为止,我了解以下内容(非常简单化):

常规 SSL:

相互 SSL:

我不明白为什么我必须在客户端使用的密钥库中包含整个密钥对(也包括私有部分)。流程中使用的客户私钥在哪里?

标签: securityssl

解决方案


服务器有一个密钥对并发送公共部分(证书),以便客户端可以使用该公共密钥来加密消息,以便他们可以共享一个对称密钥并最终保护所有通信。

这不是服务器证书的重点,使用现代密钥交换方法(即 Diffie Helmann),证书根本不参与密钥交换。您所描述的仅适用于过时的 RSA 密钥交换。

证书的要点是用于身份验证。身份验证意味着服务器证明它拥有提供的证书,然后客户端验证证书是否符合其预期,即由受信任的 CA 颁发、预期的主题/SAN、未过期等。

所有权证明是通过使用与证书中的公钥匹配的私钥签署一些数据至少部分由对等方,即客户端提供)来完成的。然后,对等方(客户端)可以使用证书的公钥验证此签名,如果验证通过,另一方(服务器)显然拥有秘密私钥,这意味着它拥有证书。

使用在相互身份验证中使用的客户端证书,过程完全相同,只是角色交换了。这就是为什么客户端需要私钥。


推荐阅读