如果我获得了为 ECDSA 签名的证书,旧版浏览器能否使用 RSA?

pai*_*cle 6 ssl rsa ssl-certificate tls certificate-authority

我正在考虑使用 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 签名的证书,并且在我的密码链中正确回退,旧浏览器是否能够使用 RSA?

我感觉答案是否定的,因为如果你签署了 RSA 证书,你就不能使用 ECDSA,但我想在排除 ECDHE-ECDSA 之前确定一下。

保罗

Mic*_*elZ 5

看看信息安全 SE 上的这个问答:

TLS 服务器是否可能向同一站点的客户端发送多个证书?

严格来说,服务器可以将任意数量的证书作为其Certificate消息的一部分发送到客户端。然而,正如标准所说

发件人的证书必须位于列表中的第一位。随后的每个证书必须直接证明其前一个证书。

因此,真正兼容的服务器无法向客户端发送选择的证书,并且不能期望客户端使用它们发送的第一个证书之外的任何其他证书。

对于签名算法支持,第 7.4.1.4.1 节中指定了一个标准TLS 扩展,客户端可以通过该扩展在握手早期(在 中,这是该过程的第一条消息)告知服务器,其中它支持的哈希函数和签名算法。例如,这允许同时拥有 RSA 签名证书和 ECDSA 签名证书的服务器发送其中之一,具体取决于客户端支持的内容。这是 TLS 中典型的情况:客户端建议,服务器选择。ClientHello

(实际上,对此扩展的支持尚未广泛。但是,实际上,每个人都使用 RSA 并支持 RSA。)

  • 请参阅有关 security.SE 问题的新评论:如果您的服务器可以配置 RSA 密钥和证书和 ECDSA 密钥(这取决于服务器,Apache 使用 openssl 并且显然可以),那么它可以而且必须使用正确的密钥和证书(作为第一个证书)用于协商的密码套件。 (2认同)