如何将多个证书密钥对附加到 TLS 客户端?可能吗?

How to attach multiple certificate-key pairs to a TLS client? is it possible?

我们可以将多个证书密钥对附加到单个 TLS 客户端吗?比如说:-

是否有可能 - 客户端 A 有一个由 CA-1 签名的证书 1 和由 CA-2 签名的证书 2 等等。假设每个证书都有自己的私钥对。

因此,当客户端 A 将 N 个证书密钥对发送到 TLS 服务器(例如服务器 A)时,基于服务器中预安装的 CA 证书,它会成功验证证书客户端的 -1 和证书 2 的验证失败(服务器没有 CA-2 证书)。如果上述情况可能发生,结果会怎样? TLS 握手会成功还是会失败?

此外,有人可以分享一个示例,说明如何使用 openssl 命令或以编程方式(比如在 C 程序中)附加多个证书密钥对。

客户端不能向服务器发送多个叶子证书,服务器会选择一个它喜欢的。相反,客户端将发送包含必要证书链的单个叶证书,并将提供由该单个叶证书签名的 CertificateVerify 消息作为匹配私钥所有权的证明。

这意味着客户端需要决定发送哪些可能的证书。服务器可以发送已接受的 CA 列表来指导客户端,但即便如此,也可能有多个证书。在这种情况下,客户端需要以某种方式决定发送哪些,例如通过询问用户。