SSL的握手应协商对等体之间的密码组,其中包含身份验证,密钥交换,加密和摘要算法。但是服务器发送给客户端的X.509证书已经包含了认证算法,为什么SSL会再次协商认证算法呢?
答案 0 :(得分:1)
“密码套件”是关于支持:客户端和服务器尝试选择一组他们都知道如何处理的算法。例如,如果客户端宣布它可以使用TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA
,则服务器知道客户端将知道如何处理DSS签名(通过Diffie-Hellman密钥交换计算),因此服务器可以使用带有DSS公钥的证书。如果我们假设服务器具有多个证书(具有不同的密钥类型),则这是有意义的:服务器希望向客户端发送“正确”的证书。
(这在一定程度上是理论上的,因为在实践中每个人都支持并使用RSA - 或者有时候用RSA签名的短暂的Diffie-Hellman。)
答案 1 :(得分:1)
首先,正如托马斯回答中所提到的,密码套件是关于支持(首先)。接下来,SSL / TLS不仅支持用于身份验证的证书,还支持其他几种机制。
答案 2 :(得分:1)
但是服务器已经发送给客户端的X.509证书 包含认证算法,那么为什么SSL会进行协商 再次验证算法?
因为你有它回到前面。验证算法首先协商,然后发送与那些/那些算法匹配的证书。
答案 3 :(得分:0)
除了之前的回复(正确 - 服务器将选择与所选验证算法匹配的证书)之外,我应该注意X.509证书不包含验证算法。 X.509(或PKIX)证书包含算法参数。也就是说,RSA公钥,椭圆曲线的参数等。您使用的是哪种认证方法(RSA加密,或带有RSA签名的Diffie-Hellman),证书不强制要求。这是与TLS协商的部分。