authentication - 为什么证书在 SSL 认证中不是 secret

标签 authentication ssl digital-certificate

我正在阅读 certificate-based authentication in SSL ,并得到了关于这个过程的问题。 (图片取自以上链接)

enter image description here

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

最佳答案

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

正确。

and impersonate the server.

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

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

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

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

然而,这并不完全正确。在图中,传入的证书根据与 keystore 分开的本地信任库进行检查。永远不会交换 session key (2.1 步骤 5)。

关于authentication - 为什么证书在 SSL 认证中不是 secret ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28446654/

相关文章:

database - InterSystems Caché - 如何访问 Caché Studio?

apache - TLS1.3 session 的 SSLSessionID 等效项是什么

wcf - 如何续订 iis7 自签名 ssl 证书

c# - 将 FileUpload 转换为 X509Certificate2

bash - 暴力破解 16 个字符的 key 需要多长时间

php - 替代登录和身份验证方法(适用于老年人)

android - HTTPS 在 Android 上使用 DefaultHttpClient

java - Java证书和vba证书有什么区别?

c# - 具有有限用户升级功能的数字签名 MSI 仍会提示管理员

asp.net-web-api - 使用JWT在Asp.net Web API上实现身份验证