为什么证书在 SSL 认证中不是秘密

Why certificate is not a secret in SSL authentication

我正在阅读有关 certificate-based authentication in SSL 的内容,并且对这个过程有疑问。 (图片取自上图link)

问题是:为什么 server.cerclient.cer 不是秘密。在此图中,似乎在交换证书时通信未加密,这是否意味着两个证书都以明文形式公开?如果是这样,为什么它是安全的?因为通过这种方式,攻击者可以轻松获取服务器的 public 密钥及其证书,并冒充服务器。我想我误会了什么。请指正。

Because in this way an adversary can easily obtain server's public key as well as its certificate

正确。

and impersonate the server.

不正确。您需要私钥和证书才能模拟服务器。

你引用的图表不正确。双方不仅会有一个密钥库,还有一个信任库。传入的证书根据本地信任库进行检查;传出证书来自密钥库。

given that the certificate is used to verify the public key belongs to the server

没有。证书 加上它的数字签名 用于验证 证书 属于服务器。数字签名是用私钥创建的。请参阅您引用的文章。

然而,这并不完全正确。在图中,根据与密钥库分开的本地 truststore 检查传入的证书。永远不会交换会话密钥(2.1 步骤 5)。