TLS握手证书链的校验

本文详细介绍了TLS握手过程中证书链的验证步骤,包括获取证书文件、提取和校验证书、查看和计算签名等。通过实例解析了如何验证从根CA到服务证书的完整性和可信性,确保网络安全。
摘要由CSDN通过智能技术生成

看一遍忘一遍,还是自己写一遍,看看这次能记多久。

在TLS握手过程中,通过证书校验认证服务端的身份和交换加密秘钥,握手完成之后后续就可以进行加密数据传输。

在浏览器地址栏上点击锁的图标,能打开查看证书的详细信息。
在这里插入图片描述
首先可以看到证书包含了多个层级,最下层的是我们直接访问的网站的服务证书,最上层是根证书。每个证书都属于一个机构组织。除了根证书是由根CA自己签发给自己的,其他证书都是由上一级组织用上一级的证书签发出来的,所以形成了层级结构。

点开细节可以看到证书的更多信息,主要看证书包含什么信息?

  • 签发机构,证书是哪个机构签发的
  • 持有机构,使用证书的机构
  • 证书有效期
  • 证书持有者公钥,用于解密下一级证书或者用于传输加密
  • 指纹哈希算法,对证书内容计算哈希,生成指纹
  • 证书指纹,对证书内容做哈希,用于验证证书没被修改过
  • 证书签名,使用签发机构的私钥对指纹加密生成签名,非对称加密用于安全认证
  • 证书签名算法

假设证书链是根CA颁发证书给中间CA,中间CA给网站颁发服务证书,验证过程是怎么样的?

  • 客户端访问网站,收到服务证书
  • 服务证书的颁发机构是中间CA,在验证服务证书前要验证中间CA,于是先验证中间CA的证书
  • 中间CA的证书由根CA颁发,根CA的根证书内置在浏览器或操作系统中,所以根证书不用验证,可以直接信任
  • 用根证书中的公钥解密中间CA证书的签名,拿到中间CA证书里的指纹,和计算出的指纹对比,一致则说明中间CA证书可信
  • 用中间CA证书中的公钥解密服务证书的签名拿到指纹,和直接计算的指纹对比,一致则服务证书可信
  • 服务证书可信,则证书上的信息是对的,接着检查持有机构是不是要访问的站点,证书有没有过期等
  • 至此,验证了访问的站点服务是可信的,继续后续TLS握手过程

说起来是不是很抽象,使用baidu证书走一遍验证的流程。这里我执行命令的系统是Ubuntu。

1. 获取证书文件

可以看到返回了三级证书,分别对应depth从0到2

openssl s_client -showcerts -connect www.baidu.com:443 </dev/null > baidu.pem
depth=2 OU = GlobalSign Root CA - R3, O = GlobalSign, CN = GlobalSign
verify return:1
depth=1 C = BE, O = GlobalSign nv-sa, CN = GlobalSign RSA OV SSL CA 2018
verify return:1
depth=0 C = CN, ST = beijing, L 
  • 14
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值