证书透明度搜索
为某个域名签发的每一张公开信任证书都会写入公开日志——这个搜索把它们读回来给你看。输入一个域名,查看 crt.sh 为它及其子域名记录了什么:每张证书由谁签发、涵盖哪些名称、何时有效。这就是能找出你遗忘的证书——以及你从未申请过的证书——的审计。
想持续监控?用 myeventwatch 免费监控——到期和宕机提醒,无需绑卡。
这个搜索测什么
证书透明度把证书签发从一笔私下交易变成了一份公开记录。当证书颁发机构为某个公开名称签发证书时,它会把证书提交到几个 CT 日志,浏览器会拒绝没有记录的证书。由此带来的副作用是给防御者的一份礼物:每个域名的完整签发历史都摆在公开之处,等着被读取。本页会调用 sysosx 服务器上的 GET /api/check/cert-search,它向 crt.sh——那些日志的公开索引——发出一次请求,查询该域名及其之下的全部内容,对答案做规范化处理,按最新优先排序,并缓存一小时。最多显示 200 条;超过这个数量的域名会得到截断提示和真实总数,绝不会悄悄截断。
把结果当作一份清单来读,而不是一份裁决。对每一条记录,有价值的问题是“我们的哪个系统申请了它?”现代系统从比其所有者意识到的更多地方签发证书:网站主机、CDN、邮件服务商、营销团队的建站工具、某人去年搭起的集群上的 Kubernetes ingress。其中大多数都是合法的,有几条对你来说仍然是新闻——这本身就有用,因为一份你从未见过的证书清单不可能成为任何人的续期或吊销计划的一部分。最重要的是那些没人能对应到某个系统的条目:未知的签发者、未知的子域名、附近没有任何部署的签发日期。它们很少见,而这正是 CT 设计要揭示的东西。
三个工具,三个问题
这个搜索回答“曾经签发过什么?”。SSL 检查器通过一次实时握手回答“服务器现在出示的是什么?”——这是知道访客实际得到什么的唯一方法。SSL 评级器回答“那台服务器的 TLS 配置得怎么样?”——协议版本、前向保密、HSTS,并给出字母评级。而浏览器端的SSL 证书解析器读取你已经持有的证书文件。一张存在于日志中但从未部署的续期证书会出现在这个搜索里,而不是检查器里;一台出示旧证书的服务器会出现在检查器里,而不是这里。当它们不一致时,各自说的都是自己的真相——用与你的问题匹配的那个。
常见问题
用一段话说,什么是证书透明度?
自 2018 年起,浏览器要求公开信任的证书发布到证书透明度(CT)日志中——那是 CA 签发的每一张证书的公开、只能追加的列表。这些日志的存在是为了让错误签发无处藏身:如果出现一张你从未申请过的、属于你的域名的证书,任何查看的人都能看到它,包括你。这个工具通过 crt.sh——那些日志最知名的公开索引——替你查看。
这与 SSL 检查器和 SSL 评级器有什么不同?
是三个不同的问题。SSL 检查器问的是服务器现在、在一次实时握手中出示什么证书。SSL 评级器审计那台服务器的 TLS 配置方式——协议、加密套件、HSTS——并给它评级。这个搜索问的是,根据公开日志,曾经为这个域名签发过什么。它能揭示实时工具发现不了的证书:被遗忘的预发布证书、来自你的组织已不再使用的 CA 的证书,以及——CT 正是为这种情况而建的——你的团队里根本没人申请过的证书。
为什么这个搜索从服务器运行,而不是在我的浏览器里?
本站浏览器端的证书解析器也提供 crt.sh 查询,并且明确说明它能否工作取决于 crt.sh 的跨源响应头——浏览器只能读取第三方服务允许它读取的内容。服务器端请求不需要满足任何跨源策略,所以这里的搜索每次都以相同方式工作。代价是通常的那一个:你输入的域名会从 sysosx 的服务器发送到 crt.sh(并且答案会被缓存一小时),页面对此如实说明,而不是隐藏。
我看到不认识的证书。应该惊慌吗?
还不用。大多数陌生的条目都很平常:托管服务商或 CDN 替你签发(Cloudflare、负载均衡器、建站工具)、你的组织已经弃用的证书颁发机构,或者某人设置后遗忘的自动续期系统。按签发者和日期逐条核对清单,把每一条对应到你运行的系统或你付费的服务商。惊慌——好吧,紧急调查——是留给剩下的那些的:一张来自没人使用的 CA、涵盖没人运行的名称、在没人部署过任何东西的时间签发的证书。那要么是你自己资产中一个值得记录的被遗忘角落,要么正是 CT 存在要抓到的错误签发,应该追查到解释清楚为止。
为什么结果要缓存一小时,为什么搜索可能失败?
因为 crt.sh 是一个免费的公共服务,负载高时出了名的慢,而证书历史是按天而不是按分钟变化的——缓存一小时在新鲜度上没有任何损失,还能避免这个工具加重 crt.sh 的负担:每个域名每小时最多一次上游查询。当 crt.sh 宕机或太慢时,搜索会用明确的错误说明这一点,而不是返回一个空列表,因为“没有找到证书”和“日志搜索失败”是相反的结论,只有一个是真的。