HTTPS证书被吊销云云

HTTPS证书被吊销云云

遇到的问题

研发同学反馈访问网站打不开,报错如下:

自己测试打开也提示同样的错误,看着是HTTPS证书被吊销了~~~

从浏览器和阿里云后台查看详情,确实显示HTTPS证书被吊销了

第一次遇见HTTPS证书被吊销的问题,简单记录一下HTTPS证书涉及吊销的一些问题。

HTTPS

HTTPS通信流程

参考:

你不在意的HTTPS证书吊销机制

小林coding图解网络

1.第一个阶段,完成 Client Hello、Server Hello等握手。包含使用SSL版本、服务器和客户端的随机数、密码套件、数据压缩等参数响应。
2.第二阶段,服务端把域名证书的公钥下发给浏览器(客户端),浏览器(客户端)校验证书合法性。
3.第三阶段,客户端把自己的证书发送给服务端(证书登陆的情况下),服务端检测客户端证书等。4.第四阶段,完成密钥协商、对称加密密钥交换。

浏览器验证证书有效性包括验证证书链是否可信,证书是否吊销,证书是否在有效期内,是否和域名匹配等。

证书验证过程: 从中间证书的TBSCertificate中拿到公钥(即 CA的公钥),对的证书签名进行解密,取其十六进制的后 64 位得到 A,用 中的签名算法,对 进行 hash 运算,得到 B,如果 A 和 B 相同,则说明 确实是由 签发的,采用同 样步骤使用 根证书 对 中间证书 进行验证。
什么是证书链
证书链是一个用链式结构存储的多个证书, 证书链中包含了【站点证书】——【中间证书】——【根证书】。
证书链中,发送者(即服务器)的证书必须在第一个位置 ,每个随后的证书都能证明它前面的证书。
根证书通常是内置在操作系统或者支持HTTPS的应用当(包含浏览器)中的,攻击者无法修改证书的公钥所以是可信的,此外为了减少开销一般不会将根证书返回。

HTTPS证书什么情况下会被吊销

SSL证书什么情况下会被吊销

是第一次遇见这种情况,目前还不知道什么原因HTTPS证书被吊销,等阿里云这边反馈后再补充上(阿里云反馈说是账号自己操作吊销的,根据审计日志、消息通知等都查不到。后续测试,申请免费证书再吊销后是没有消息通知的,只有申请证书成功签发后会有通知)

HTTPS证书的吊销状态检测方式

  • 1. Certificate Revocation Lists (CRL)

CA会定期更新发布撤销证书列表,Certificate Revocation Lists (以下简称CRL),RFC 5280:Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile。CRL分布在公共可用的存储库中,浏览器可以在验证证书时获取并查阅CA的最新CRL。该方法的一个缺陷是撤销的时间粒度限于CRL发布期。只有在计划更新所有当前发布的CRL之后,才会通知浏览器撤销。各家签名CA厂商的策略不一样,有的是几小时,有的是几天,甚至几周。

CRL 检测流程,简单理解为先下载文件然后进行对比校验
  • 2. Online Certificate Status Protocol (OCSP)

在RFC2560X.509 Internet Public Key Infrastructure Online Certificate Status Protocol – OCSP的描述中,浏览器从在线OCSP服务器(也称为OCSP Response Server)请求证书的撤销状态,OCSP Server予以响应。这种方法避免CRL更新延迟问题。

OCSP 检测流程,简单理解为在线校验

对比付费和免费证书,能看到付费证书一般CRL和OCSP两种都有,免费证书只有一种OCSP,如下图:

HTTPS证书的吊销状态检测脚本

  • 在线检测:https://certificate.revocationcheck.com/
  • 代码检测:

openssl ocsp检测一直提示Responder Error: unauthorized (6),这个异常暂时无法解决。

OCSP-Checker依托网络浏览器来检查X509数字证书的吊销状态

# -*- coding: utf-8 -*-

from ocspchecker import ocspchecker
ocsp_request = ocspchecker.get_ocsp_status("www.passionarkiti.net")
print(ocsp_request)

#HTTPS证书被吊销
['Host: www.passionarkiti.net:443', 'OCSP URL: http://ocsp.digicert.com', 'OCSP Status: REVOKED']

#HTTPS证书有效
['Host: www.wuyungai.com:443', 'OCSP URL: http://r3.o.lencr.org', 'OCSP Status: GOOD']

HTTPS证书常用的监控

Python:获取域名ssl证书信息和到期时间

  • 脚本方式 openssl 检查证书的有效期,配合监控发送HTTPS证书到期提醒
[root@web01-proxy ssl]# echo | openssl s_client -servername www.passionarkiti.net -connect www.passionarkiti.net:443 2>/dev/null | openssl x509 -noout -dates
notBefore=Oct 20 00:00:00 2023 GMT
notAfter=Oct 19 23:59:59 2024 GMT

延伸阅读

俄乌危机中的数字证书:吊销、影响、缓解

OpenSSL 通过OCSP手动验证证书

总结

HTTPS证书常用的监控方式只能检测网站启用HTTPS后是否可以正常访问、HTTPS证书有没有到期等,至于HTTPS证书有没有被吊销不容易进行检测,可以使用OCSP-Checker检测方式来完善HTTPS监控。

留下回复

error: Content is protected !!