浏览器收到服务器发送的证书后,需要验证其真实性。而证书的签名是通过签名 算法 和 上级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 密钥交换。欢迎分享,转载请注明来源:夏雨云
评论列表(0条)