浏览器验证网站数字证书的流程(HTTPS协议)

浏览器验证网站数字证书的流程(HTTPS协议),第1张

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,发行者。

Validity period,有效时间。

Subject name ,证书主体名称。

Subject Public Key Info ,证书主体公钥信息,包含公钥算法和公钥值。

Issuer Unique Identifier (optional),发行商唯一ID。

Subject Unique Identifier (optional),主体唯一ID。

Extensions (optional),扩展。

证书链由多个证书一层一层组成的,除了最底层的网站证书的公钥是给用户加密报文外,其他层证书中的公钥均用于解密底层的证书指纹签名。最高层的根证书是 自签名 的,也就是自己颁发给自己,所以它的公钥不仅用来解密下层的签名,也用来给自己的签名解密。

验证证书是否真实的任务完成了,那么证书是否可靠如何验证呢?一句话,只要根证书可靠,整个证书链就可靠,而根证书是否可靠要看这个根证书是否在 操作系统 或浏览器内置的可信根证书内,在的话就可信。

现在,当客户端出现并请求与您的站点建立安全连接时(如在 HTTPS 的情况下连接到端口 443 所示)。您的服务器发送它的公共(非私有)证书并开始安全握手。一种这样的握手称为Diffie-Hellman 密钥交换。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/326722.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存