【发布时间】:2017-06-15 16:01:06
【问题描述】:
假设我们有 2 个使用 RSA 的 CA“ACA”和“BCA”ECC,它们都为服务器颁发 TLS 证书。 ACA 受大多数客户信任,而 BCA 仅受少数客户信任。
虽然 ACA 是受信任的,但 RSA 总是需要更多时间。因此,我们希望所有信任 BCA 的客户都首选 BCA 签名的证书,而其他客户则回退到 ACA 的证书。
据我所知,为一个域配置多个证书是可能的。至少在nginx上,但是客户端总是使用我在nginx的snginx.conf配置文件中放了a作为第二个证书入口的证书。
如果可能,服务器是否有可能处理交付 EC 证书,但如果客户端不信任证书,则由 RSA 处理?
【问题讨论】:
-
客户端可以使用
signature_algorithms扩展来表示他们想要RSA、DSA、ECDSA 等。请参阅RFC 5246, Section 7.4.1.4. Hello Extensions。当 nginx 在您描述的情况下提供不同的证书时,可能是由于signature_algorithms扩展。但是签名算法和发行者之间没有联系或关联。为了克服它,您通常要求客户将缺少的 CA 安装到他们的信任库中。 -
因此,选择使用所提供的两者中的哪一个是客户端的问题。可以通过在服务器上使用单个证书而不是多个证书来保留它,因为没有浏览器实际上会首先查找信任存储中的哪些 CA。