证书工作流程

先了解一些相关的概念

  • 公私秘钥:加密数据,生成会话密钥;

  • 签名算法:生成摘要,防篡改,Hash之后私钥加密,验证方需要公钥解密,然后解密的内容Hash一下,验证两次摘要是否一致;

  • 证书:数字身份证,验证身份有效性,通过CA签发链一级级验证,验证过程是从下至上,根证书存于系统;

在证书链校验过程中,客户端使用上一级证书的公钥来验证下一级证书的签名。这一过程通过一系列步骤来确保证书的真实性和有效性。具体步骤如下:

  1. 提取签名
    客户端从要验证的证书中提取出数字签名本身。这个签名是由上一级CA的私钥生成的。

  2. 提取证书信息
    客户端接着提取证书中的所有其他信息,即被签名的内容,这通常包括证书的版本、序列号、签发者、有效期、主题、主题公钥信息、扩展等。这些信息组合起来构成证书的“tbsCertificate”(To Be Signed Certificate)部分。

  3. 计算哈希值
    客户端使用与证书签名相同的哈希算法(如SHA-256)对“tbsCertificate”部分的内容计算哈希值。

  4. 使用公钥解密签名
    客户端使用上一级CA证书中的公钥对证书中的数字签名进行解密。解密的结果应该是一个哈希值,这个哈希值与证书签名时使用的哈希算法和内容相对应。

  5. 比较哈希值
    客户端将解密得到的哈希值与第3步计算的哈希值进行比较。如果两者相同,说明签名有效,证明证书确实是由拥有相应私钥的CA签发的。

这个过程保证了证书链中每个证书都是由它的直接父CA正确签发的,直到根CA证书。由于根CA证书是预置于客户端(操作系统或浏览器)中的,并且被默认信任,所以这个过程为整个证书链提供了信任的基础。