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

信息安全 tls 证书 证书颁发机构 密码选择
2021-09-09 08:07:32

我要存档的是在我的站点中启用 ECDSA 和 DSS 密码,但同时不仅仅依赖于自签名证书,因此我可以向我的客户发送多个证书,他们可以选择 ECDSA 和 DSS 而不是 RSA如果他们可以验证我的自签名证书,如果不能,则退回到 CA 签名证书并拒绝 ECDSA 和 DSS。

1个回答

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

发件人的证书必须在列表中排在第一位。后面的每个证书必须直接证明它前面的证书。

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

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

(实际上,对这个扩展的支持还没有普及。但是,实际上,每个人都使用 RSA 并支持 RSA。)