我正在尽力了解相互 SSL。我找不到一个好的答案,那就是为什么您需要在客户端上创建密钥对,而不是仅提供公共客户端证书。
到目前为止,我了解以下内容(过于简化):
常规SSL:
相互SSL:
我不明白为什么我必须在客户端使用的密钥存储中包括整个密钥对(也包括私有部分)。在此过程中,客户的私钥在哪里使用?
答案 0 :(得分:4)
服务器具有密钥对,并发送公共部分(证书),因此客户端可以使用该公共密钥对消息进行加密,以便它们可以共享对称密钥并最终保护所有通信。
这不是服务器证书的重点,而对于现代密钥交换方法(即Diffie Helmann),证书根本不涉及密钥交换。您描述的内容仅适用于过时的RSA密钥交换。
证书的要点将用于身份验证。认证意味着服务器证明其拥有所提供的证书,然后客户端验证证书是否符合其期望,即由受信任的CA发行,期望的主题/ SAN,未过期等。>
所有权证明是通过对某些数据进行签名(至少部分由对等方,即客户端)提供的,该数据具有与公钥匹配的私钥在证书中。然后,对等方(客户端)可以使用证书的公钥来验证此签名,并且如果验证通过了另一方(服务器),则显然拥有私有私钥,这意味着它拥有证书。
对于相互认证中使用的客户端证书,此过程完全相同,仅在角色切换时。这就是为什么客户端需要私钥的原因。