SSL 的握手应该在包含身份验证、 key 交换、加密和摘要算法的对等点之间协商密码套件。但是服务器发给客户端的X.509证书中已经包含了认证算法,为什么SSL还要重新协商认证算法呢?
最佳答案
“密码套件”是关于支持的:客户端和服务器尝试选择一组他们都知道如何处理的算法。例如,如果客户端宣布它可以使用 TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA
,则服务器知道客户端将知道如何处理 DSS 签名(通过 Diffie-Hellman key 交换计算),因此服务器可以使用带有 DSS 公钥的证书。如果我们假设服务器有几个证书(具有不同的 key 类型),这是有道理的:服务器想要向客户端发送“正确的”证书。
(这在一定程度上是理论上的,因为在实践中每个人都支持并使用 RSA——或者有时使用 RSA 签名的临时 Diffie-Hellman。)
关于authentication - 为什么ssl密码套件包含认证算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6994356/