【发布时间】:2021-12-18 18:59:01
【问题描述】:
我正在搜索有关如何执行 SSL 验证过程的算法,但几乎在所有地方,他们都将证书验证步骤解释为“证书由客户端检查”或类似的东西,但我想知道这背后的场景是什么。
我知道的是:
-
当客户端收到你想尝试握手的属于哪个网站/服务器的证书副本时,有一些指标显示webserver的public信息(我认为这是为了匹配您的浏览器已安装的缓存证书条目中的条目。)
-
一旦客户端将缓存证书与网络服务器的证书匹配,它就会开始验证它。 它使用缓存证书的公钥来解密网络服务器的签名。(?[不确定,因为公钥用于“加密”数据,而不是解密。这一步也可能完全错误。] )
-
一旦解密,它会比较缓存的签名和网络服务器的签名。如果相同,则证书有效。
-
我也听说过链子。我真的很想知道如何知道一个链,以及如何确定网络服务器的证书是否只是属于一个链。(?)
客户端如何检查 SSL 证书?我需要一步一步地得到答案并澄清。谢谢:)
编辑:
我认为这里的公钥用于“解密”而不是“加密”。所以公钥不负责每次加密,它也可以解密并且不加密一些数据。这里的神奇之处在于,由于公钥在这里解密,如果你想伪造证书,你应该拥有那个 CA 的私钥来应用加密的更改(因为只有 private 密钥可以加密数据) .但是现在,另一个问题来了...如果我们使用网络服务器的公钥解密它,然后更改签名中的条目,然后使用我们的自己的私钥再次加密它(我们生成它手动,它不属于服务器。),这实际上让我们表现得像一个 CA;最后覆盖证书以保存我们的自己的公钥,它能够解密用我们的自己的私钥加密的数据?
【问题讨论】:
标签: security ssl https certificate ca