SSL 握手中的客户端身份验证

SSL 握手中的客户端身份验证

我试图了解客户端身份验证在 SSL 握手过程中如何工作。

  1. 我们需要在服务器信任库中拥有客户端叶证书吗?在双向 SSL 握手过程中是否随时会提及?如果存在的话会被忽略吗?

  2. 在Server Hello消息中,有certificate_list消息。这包含已签署客户端证书的 CA 或 Inter CA 的列表。客户端将检查此列表,并且仅发送由列表中存在的 CA 或 Inter CA 签名的客户端证书。这种理解正确吗?

  3. 一旦客户端将客户端证书发送到服务器,服务器将检查其是否由已知 CA 签名(CA 存在于 Server hello 中的certificate_list 中),如果是,则服务器确定证书中的证书详细信息(cn)是合法的。然而,此时服务器不确定客户端是否拥有客户端证书的私钥(可能是客户端通过非法方式获得了客户端证书),因此服务器期望来自客户端的certificate_verify消息。该消息由客户端的私钥签名,并且由于服务器能够通过客户端的公钥解密该消息(服务器通过客户端证书在之前的消息中接收到该消息)现在服务器可以确认客户端是它所声称的。这种理解正确吗?

  4. certificate_verify消息的内容是什么?

  5. 在这种情况下,服务器如何区分客户端。服务器是否检查客户端 CN 并据此接受和拒绝客户端?如果没有此服务器,如果所有客户端拥有合法的证书权利,它们将接受它们吗?

相关内容