我确实了解密码学基础知识,但我不确定以下三个步骤:
第 1 步:如何计算 TLS 证书
如果我错了,请纠正我:证书颁发机构在相关证书信息(包括证书申请者的公钥)上计算哈希值,然后使用颁发机构的私钥对该哈希值进行签名。此过程的输出是单个证书文件,可以将其部署在有权访问相应私钥的服务器上。
第二步:如何验证服务器是否拥有TLS证书对应的私钥?
客户端在 TLS 握手期间从服务器获取证书。但仅凭证书不足以验证数据的真实性。(因为任何人都可以在不拥有私钥的情况下发送证书副本)因此我认为必须传输一些额外的随机信息,需要使用相应的私钥进行签名(也许也可以通过计算哈希)?
客户端是否使用证书的公钥解密此随机信息?这个检查是如何进行的?
第 3 步:如何验证证书是否由受信任的机构签署?
我认为这主要适用于预装的浏览器表,其中包含受信任机构的公钥(以及其他信息)。
证书颁发机构的公钥是否用于解密哈希值并检查它是否与整个证书上的自计算哈希值匹配?