我正在研究使用 ECDHE-ECDSA,有很多很棒的文章介绍为什么(https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/) 和 (http://blog.cloudflare.com/ecdsa-the-digital-signature-algorithm-of-a-better-internet), 例如。
显然浏览器支持程度不是很好,但 Chrome 30、Windows 8 上的 Internet Explorer 11、OS X 10.9 上的 Safari 7 和 Firefox 26 都支持 TLS 1.2。
我研究过一些 CA,只有少数几个为 ECDSA 签名证书(Verisign/Symantec 为 ECDSA 签名证书)。我的问题是:如果我获得为 ECDSA 签名的证书,并且在我的密码链中正确回退,旧版浏览器是否可以使用 RSA?
我感觉答案是否定的,因为如果您签署 RSA 证书,则不能使用 ECDSA,但在排除 ECDHE-ECDSA 之前我想确定一下。
保罗
答案1
请查看信息安全 SE 上的这个问答:
严格来说,服务器能向客户端发送任意数量的证书,作为其Certificate
消息的一部分。然而,标准说:
发送者的证书必须位于列表的首位。后面的每个证书都必须直接验证前面的证书。
因此,真正兼容的服务器不能向客户端发送证书选择,也不能期望客户端使用除他们发送的第一个证书之外的任何其他证书。
为了签名算法支持,有一个标准TLS 扩展指定于7.4.1.4.1节,客户端可以在握手的早期(在 中ClientHello
,这是该过程的第一个消息)告知服务器它支持哪些哈希函数和签名算法。这允许拥有 RSA 签名证书和 ECDSA 签名证书的服务器发送其中一种,具体取决于客户端支持哪种证书。这是 TLS 中的典型做法:客户端建议,服务器选择。
(实际上,对此扩展的支持尚未普及。但实际上,每个人都使用 RSA 并支持 RSA。)