监控证书透明度日志检测未授权SSL证书

自2018年以来,每个证书颁发机构(CA)都被要求将其签发的每个SSL证书提交到公开的证书透明度(CT)日志中。这项由Google领导的透明度倡议旨在防止未授权的证书签发被隐瞒。尽管这为安全带来了强大的好处,但这也意味着攻击者可以看到为您的域名签发的每个证书。证书透明度监控是指监视这些公开日志以检测您的域名上是否有任何可疑或未授权的证书被签发,并在这些证书造成伤害之前采取行动。本文将解释什么是CT日志、为什么重要,以及如何设置监控来保护您的域名。

理解证书透明度的工作原理

证书透明度是一个旨在使证书签发过程透明和可审计的系统。核心概念:每个由任何CA签发的SSL证书都必须被记录在至少两个独立的公开CT日志中。这种日志记录是强制性的——没有办法签发一个有效的证书,让浏览器信任它,而不证明它在CT日志中。现代浏览器(如Chrome、Firefox和Safari)都在验证证书中包含带签名的证书时间戳(SCT),以证明它们已被记录后才接受这些证书。这为互联网上所有证书活动创建了一个永久的公开审计跟踪。

该系统旨在捕获被破坏或恶意的证书颁发机构。如果攻击者欺骗CA签发虚假证书,或者如果CA实际上被破坏,该证书仍然必须进入CT日志。即使攻击者能够隐瞒许多事情,他们也无法隐瞒CT日志要求的证书——这种要求内置在浏览器信任模型中。

CT监控对安全的关键性

大多数域名所有者只有在出现问题时才会发现SSL证书的问题——用户报告收到安全警告,或者攻击者使用虚假证书发起成功的网络钓鱼活动或中间人攻击。到那时,损害已经造成。通过CT监控,您在签发后的几小时内就能了解到新的证书,这给您足够的时间来调查并撤销任何未授权的证书。

CT监控拯救危机的真实场景:您信任的CA被破坏了几个小时——在这个窗口期间,攻击者为您的域名获得了一个证书。一个拥有CA账户访问权限的心怀不满的员工签发了一个恶意证书。一个攻击者短暂劫持了您的DNS,并说服CA签发证书(是的,一些CA容易受到基于DNS的验证攻击)。在所有这些情况下,CT监控是您的早期预警系统。

使用crt.sh搜索证书透明度日志

手动检查CT日志最简单的方法是crt.sh,这是由Sectigo运营的免费服务。使用步骤如下:在浏览器中访问https://crt.sh。在搜索框中输入您的域名(例如example.com)。该网站返回为该域名签发过的所有证书的完整列表,包括签发日期、过期日期、CA名称以及每个证书覆盖的所有主体备用名称(SAN)。如果您想查看包括通配符和子域名的所有证书,请改为搜索%.example.com——%号在查询中充当通配符。结果按时间戳排序,使您能够轻松发现最近的活动并识别模式,例如批量证书签发或意外条目。

尽管crt.sh快速且免费,但它不会自动通知您新证书。您必须每天手动检查它以发现未授权的签发——对于繁忙的团队来说不切实际。这就是自动化监控的用处所在。

Google证书透明度搜索工具

Google运营自己的证书透明度搜索工具(https://transparencyreport.google.com/https/certificates),提供了一个更清洁、更直观的界面来搜索和跟踪证书。Google的工具使用与crt.sh相同的底层原理,但由Google设计,考虑到易用性。该界面呈现时间线视图,使您更容易识别证书何时被签发并注意到异常模式。该界面还清楚地显示证书详细信息,包括有效期、证书SHA-1指纹以及覆盖的所有域名。对于倾向于使用Google工具的组织或希望与其他Google服务集成的组织,这是crt.sh的一个可靠替代品。信息基本相同——两者都查询相同的CT日志——但呈现方式不同。

设置自动化CT监控

手动检查不可靠;自动化监控是专业的做法。多个服务提供这种能力:Censys(https://censys.io)提供证书监控和电子邮件告警。Entrust证书搜索(https://www.entrust.com/ct-search)提供类似的功能。或者,如果您有技术能力,您可以编写一个脚本,每天查询CT API并在发现新证书时发送告警。一些商业安全平台(如Qualys SSL Labs和ZeroSSL)内置包含CT监控。关键特性是:告警应立即到达您安全团队的电子邮件或Slack,而不是被埋没在您偶尔检查的仪表板中。

AsiaGB提供的SSL证书起价为1000泰铢/年用于基本DV证书,或5000泰铢/年用于通配符SSL(如果需要覆盖多个子域名)。当您从AsiaGB购买SSL证书时,我们的支持团队(电邮:[email protected]或工单:billing.in.th/submitticket.php)可以帮助指导您设置CT监控并快速响应任何可疑活动。

子域名暴露的权衡

证书透明度提供了巨大的安全价值,但有隐私成本:每个证书必须列出它覆盖的所有域名,包括子域名。这些信息是公开的、可搜索的。攻击者使用CT日志进行侦察——他们搜索您的域名,看到您的所有子域名(内部API、开发系统、测试数据库等),然后探测这些系统中的漏洞。

一些组织试图通过使用自签名证书或避免内部子域名上的HTTPS来隐藏敏感的内部系统——但这会产生不同的安全问题。最好的平衡是:(1)仅在子域名确实需要HTTPS时才在SSL证书中包含它们,(2)为真正敏感的基础设施使用单独的证书,而不是将所有内容都捆绑到通配符中,以及(3)将内部系统保持在VPN或防火墙后面,而不是依赖证书隐蔽性来实现安全。

有效CT监控的最佳实践

以下是进行有效证书透明度监控的专业实践:

专业提示:将CT告警路由到专用的电子邮件地址或Slack频道,整个安全团队都监控该频道,而不是发送给个人。这可以防止当团队成员休假或工作超负荷时告警被错过。

理解CT日志生态系统

多个独立的CT日志存在是为了防止任何单个日志运营商成为单点故障。主要日志包括Google Argon(新证书最常见的目的地)、Google Skylight(用于旧证书)、Sectigo Sabre和DigiCert Yeti。每个日志由独立运营并维护自己的只追加分类账。浏览器针对这些日志验证证书以确保其合法性。当您搜索crt.sh或Google工具时,您正在查询从多个CT日志提取数据并在统一界面中呈现它们的聚合器。

理解这个生态系统很重要,因为:(1)证书在所有日志中传播需要时间(通常在24小时内),(2)不同的日志可能有略微不同的保留政策,(3)为了实现最大覆盖,您应该监控主要日志,而不仅仅是一个。

响应未授权的证书

如果您在CT日志中发现了您未授权的证书:

  1. 确定证书:记下签发该证书的CA、其覆盖的确切域名、序列号以及何时签发。
  2. 立即联系CA:给您的CA安全团队发送电子邮件或致电,并请求撤销。提供序列号。大多数CA会在几分钟内做出响应。
  3. 监控撤销:检查CA的撤销状态或OCSP端点,以确认证书实际上被标记为已撤销。在验证之前,不要假设已撤销。
  4. 启用HSTS预加载(如适用):如果证书覆盖您的主域名,考虑启用HSTS预加载,以防止浏览器接受该证书,即使撤销检查失败。
  5. 调查根本原因:您的CA账户被破坏了吗?您的组织中是否有人在未告诉您的情况下请求了证书?DNS被劫持了吗?了解未授权证书如何出现有助于防止再次发生。
  6. 记录事件:在您的安全记录中记录详细信息、时间表和解决方案,以便于合规和事后审查。

立即保护您的SSL基础设施

从AsiaGB购买安全的SSL证书(DV 1000泰铢/年,通配符5000泰铢/年),将CT监控添加到您的安全例程中,并确保您的域名受到保护,防止未授权的证书签发。

浏览SSL证书

关于证书透明度监控的常见问题

证书透明度监控是法律要求吗?

不是,这不是法律强制性的,但这是一项最佳实践。如果您的组织处理敏感数据或在受管制行业(金融、医疗保健等)中运营,您的合规要求可能会强制要求证书监控作为您的安全控制措施的一部分。无论如何,它值得自愿进行,作为扎实安全计划的一部分。

我应该多久检查一次证书透明度日志?

理想情况下,通过自动化监控持续进行。如果这不可行,至少每周检查一次。大型组织通常每天检查一次,作为其安全例程的一部分。关键是在几小时或几天内捕获未授权的证书,而不是几周。

通配符证书是否会暴露我的整个基础设施?

并不完全。*.example.com的通配符证书仅覆盖任何一级子域名(a.example.com、b.example.com),但不覆盖多级子域名(a.b.example.com)。然而,您正在使用通配符证书这一事实在CT日志中是可见的,这向攻击者表明您有多个子域名。

如果竞争对手或恶棍为我的域名签发证书作为玩笑怎么办?

认真对待。即使是玩笑证书也可能被滥用。联系CA并请求撤销,并报告事件。如果它从同一个人或IP地址反复发生,请提起警察报告或咨询律师。不要忽视它希望它会消失。

我能否从证书透明度日志中隐藏我的子域名?

如果这些子域名需要HTTPS,则不能。一旦您为子域名签发SSL证书,其名称就会出现在CT日志中。您的唯一选择是对内部系统使用自签名证书(不受浏览器信任)、对内部流量使用VPN,或者接受子域名是可发现的。

哪项CT监控服务最适合小型企业?

对于无法承担高级服务的团队:从免费的crt.sh或Google证书透明度搜索开始,并每月手动检查一次。设置日历提醒。随着您的发展,逐步升级到Censys的免费层或实现简单的CT日志监控脚本。大多数小型团队会发现,手动月度检查与主域名上的安全监控相结合就足够了,如果没有发生任何变化。