1. 数字证书组成
- 公钥
- 持有者信息
- 证书认证机构(CA)的信息
- CA对这份文件的数字签名以及使用的算法
- 证书的有效期
- 一些额外的其他信息
2. CA签发证书流程
- 首先CA会把持有者的公钥,用途,颁发者,有效时间等信息打成一个包,然后对这些信息进行hash计算,得到一个hash值H1
- 然后CA会使用自己的私钥将该Hash值加密,生成数字签名。
- 然后将这个数字签名添加到文件证书上,形成数字证书
3. 客户端验证证书流程
- 客户端会使用同样的Hash算法对证书的信息进行hash运算,得到一个hash值H2
- 通常浏览器和操作系统中集成了CA的公钥信息,浏览器收到证书后可以使用CA的公钥进行解密数字签名得到hash值H1
- 最后比较H1与H2是否相同,如果相同则是可信赖的证书。反之不可信
4. 如何验证证书的有效性
- 我们的操作系统会内置一些根证书
- 当我们收到一个证书A后,需要验证这个证书的合法性
- 找到证书的颁发机构B,获取这个颁发机构的证书B
- 如果这个颁发机构B的证书B不是根证书,则继续找这个证书B的颁发机构C,获取这个机构C的证书C
- 直到找到根证书。因此证书验证可能会形成一个证书链
为什么不直接向根证书申请:可能时因为吞吐量,也有可能时因为保证根证书的安全性