什么是Certificate Transparency
为了向用户提供HTTPS加密的服务,网站服务必须首先从受信任的证书颁发机构(CA)申请证书。TLS握手时,将该证书提供给浏览器,以验证用户尝试访问的站点。
近年来,由于HTTPS证书系统中的结构缺陷,证书和颁发CA容易受到破坏和操纵。Google的Certificate Transparency(证书透明性,以下简称CT)项目旨在通过提供一个用于监视和审核HTTPS证书的开放框架来保护证书颁发过程。
Google鼓励所有CA将其颁发的证书写入公开可验证的,仅附加的,防篡改的日志中。将来,Chrome和其他浏览器可能会决定不接受尚未写入此类日志的证书。
截至2021年4月27日,Google监控的CT日志收集了12,983,726,809个条目。
关我什么事
通过浏览CT日志,你可以审阅CA签发出的几乎所有HTTPS证书。这对于预防钓鱼攻击有积极意义。
比如,你可以判断CA是否签发出了预期之外的证书。我作为域名plusplus7.com的拥有者,如果有人申请了域名p1usp1us7.com的证书,那么我应该提高警惕,并做出安全应急响应。
那我该做什么
你可能已经读过这篇《像老板一样处理CT日志》[Parsing Certificate Transparency Logs Like a Boss]以及用过Axeman。
Parsing Certificate Transparency Logs Like a Boss
Retrieving, Storing and Querying 250M+ Certificates Like a Boss
Axeman使用Python3编写,支持异步IO,AIO下载解析证书文件,并且把结果保存在本地CSV文件里。
根据作者的描述,他/她使用16核, 32GB内存和一块750GB的SSD硬盘,使用不到一天就下载完了一个google的CT服务器上的证书。当然,作者是在2017年发布的文章,现在可能需要不止一天的时间。
但是Axeman的问题是,功能过于单一。
- 只支持保存结果到CSV文件
- 不支持中断之后,在断点重新开始任务
- 不支持更丰富的Matcher
Hola, Amigo, Juega Conmigo~
Axeamigo是一个用Go语言开发的,受Axeman启发的工具库。
和Axeman不一样的是,Axeamigo使用Google提供的官方库来下载并解析证书;通过插件风格的编程框架支持任务断点续接;支持丰富的Matcher。