首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么相互SSL需要客户端的密钥对而不是公共证书?

为什么相互SSL需要客户端的密钥对而不是公共证书?
EN

Stack Overflow用户
提问于 2019-07-09 15:27:07
回答 1查看 542关注 0票数 2

我正在尽我最大的努力来理解相互 SSL。我找不到一个很好的答案,就是为什么您需要在客户端上创建密钥对,而不是仅仅提供公共客户端证书。

到目前为止,我的理解如下(非常简化):

常规SSL:

  • 服务器拥有一个密钥对,并发送公共部分(证书),因此客户端可以使用该公钥加密消息,这样它们就可以共享对称密钥,并最终保护所有通信。
  • 要验证服务器实际上是服务器,证书颁发者在默认情况下必须被信任(在信任库中)。

相互SSL:

  • 完全相同,只是这次服务器要求客户端对自己进行身份验证。
  • 客户端发送它的公共证书,该证书根据服务器上的某种“已知证书”列表进行验证。如果匹配,通信可以继续。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-09 18:06:38

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

这不是服务器证书的要点,使用现代密钥交换方法(即Diffie-Hellman),证书根本不涉及密钥交换。您所描述的只适用于过时的RSA密钥交换。

证书的要点将用于身份验证。身份验证是指服务器证明它拥有所提供的证书,然后客户端验证证书是否符合其期望,即由可信CA颁发的证书、预期的subject/SAN、未过期等。

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

对于用于相互身份验证的客户端证书,过程完全相同,仅用于切换角色。这就是客户端需要私钥的原因。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56955948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档