证书如何通过浏览器中存储的客户端根证书进行验证

证书如何通过浏览器中存储的客户端根证书进行验证

一旦客户端从 Web 服务器收到证书。Web 服务器公共证书如何通过浏览器中安装的根受信任证书进行验证?

我仍然无法理解信任链。有人可以详细解释一下这两个吗?

答案1

当该服务器证书首次创建时,它由颁发它的证书颁发机构 (“CA”) 签名。这意味着颁发 CA 获得服务器证书,计算其“安全哈希”/“消息摘要”,并使用 CA 的私钥对该哈希进行签名(加密)。然后,CA 将该签名附加到证书的末尾。

您的客户端从 CA 的证书中获取 CA 的公钥,并使用它来验证服务器证书上的 CA 签名。也就是说,它使用 CA 的公钥解密安全哈希,并计算自己的服务器证书安全哈希。然后,它将从签名中解密的值与刚刚从证书其余部分计算出的哈希值进行比较,如果它们匹配,则证明证书自由 CA 签名以来未被伪造或修改。

如果您已经信任该 CA 为服务器证书提供担保,那么您现在可以相信服务器证书中的公钥确实是证书“主体身份”部分中标识的服务器的公钥。但是,您仍然不知道您正在与之交谈的服务器是此证书的真正所有者,而不是冒名顶替者。这就像您已经验证了驾驶执照不是伪造的,但您仍然需要验证向您出示身份证的人确实是身份证的所有者,而不是偷窃者。

为了证明服务器是可信的,而不是冒名顶替者,您必须让服务器证明它知道秘密私钥,而只有服务器证书的真正所有者才应该知道。这可以通过向服务器发送质询(一个随机字节块)来实现,服务器必须使用其私钥加密并返回给您。如果您可以使用服务器证书中的公钥解密响应(质询字节的加密版本),那么这证明服务器知道与服务器证书中的公钥形成匹配对的私钥,因此它确实是证书中指定的服务器。

相关内容