为什么ssl密码套件包含身份验证算法?

时间:2011-08-09 09:55:11

标签: authentication encryption ssl certificate x509

SSL的握手应协商对等体之间的密码组,其中包含身份验证,密钥交换,加密和摘要算法。但是服务器发送给客户端的X.509证书已经包含了认证算法,为什么SSL会再次协商认证算法呢?

4 个答案:

答案 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协商的部分。