客户端私钥设置为客户端证书身份验证的一部分

Client Private Key is set as part of client certificate authentication

我正在查看 this example,我可以看到作为客户端身份验证的一部分,用户应该将持有用于证书签名请求的私钥的 --key 传递给 curl 命令,我'我不确定为什么需要这样做,如果它用于加密,难道不应该使用服务器的 public 密钥吗?

有证书本身并不能证明什么。证书从来都不是秘密,可以自由共享,因此多方可以拥有有效的客户端证书。 作为具有相互身份验证的 TLS 握手的一部分,客户端发送 CertificateVerify 消息以证明它也具有与之前在 Certificate 消息中发送的证书匹配的私钥。 TLS 服务器已经有了客户端的证书(因此它的 public 密钥),它可以验证签名。