关于浏览器验证网站数字证书的流程网上的资料一般讲的都不是很清楚。在查阅了不少资料后终于搞清楚这部分。
CA下发给网站的证书都是一个证书链,也就是一层一层的证书,从根证书开始,到下级CA,一层一层,最后一层就是网站证书。
浏览器收到服务器发送的证书后,需要验证其真实性。而证书的签名是通过签名算法和上级CA的私钥生成的,并非很多文章里简单说的靠CA私钥生成。浏览器需要用上级CA的公钥才能解密签名,并与生成的指纹对比,那么问题来了,这个上级CA的公钥从哪来呢?
答案是此公钥来自于证书链该层的上级CA的证书明文内。单个X509v3证书由以下部分组成:
X.509v3证书由三部分组成:
- tbsCertificate (to be signed certificate),待签名证书。
- SignatureAlgorithm,签名算法。
- SignatureValue,签名值。
tbsCertificate又包含10项内容,在HTTPS握手过程中以明文方式传输:
- Version Number,版本号。
- Serial Number,序列号。
- Signature Algorithm ID,签名算法ID。
- Issuer Name,发行者。