摘要

  • DigiCert 承认,部分基于 CNAME 的域名验证在执行时缺少该方法所要求的下划线前缀;按它自己的说法,缺陷影响了约 0,4% 的相关域名验证。
  • 随后它把 CA/Browser Forum 的 24 小时吊销规则套在自己身上,又从另一个起点重算了期限,把吊销推迟最多 120 小时,改到 2024 年 8 月 3 日 19:30 UTC。

证书颁发机构的域名控制验证,是一份申请从「自称」变成「证书」的那一步。机构要确认申请人真的控制着那个域名,然后签字。这个检查是代码,因此可以写得对、审得对,却仍然做的不是规范所要求的动作。

DigiCert 的 CNAME 路径做的就不是。公司在自己发布的事件页面上写道:「Recently, we learned that we did not include the underscore prefix with the random value used in some CNAME-based validation cases」(DigiCert 事件页面)。

这个下划线不是装饰。在 CNAME 验证里,申请人要把随机值发布在带前缀标签的 DNS 记录下,再由机构读回来;前缀一漏,实际执行的检查和规范写明的检查就不再是同一件事。DigiCert 把影响范围定在约 0,4% 的相关域名验证(DigiCert 事件页面)。这个比例是运营方自己给出的数字,本次查阅的材料中没有任何独立的证书数量或客户数量统计。

接下来才是这份档案值得留下的部分。发现是 DigiCert 自己的。披露是 DigiCert 自己的,写在它自己的页面上,用它自己的话。规则执行也是它自己的。

2024 年 7 月 29 日 02:17 UTC,公司提交了初步事件报告;同日 22:36 UTC 发出吊销通知,并写明:「The 24-hour revocation rule applies in this circumstance as the issue impacts domain validation」(Mozilla Bugzilla 1910322)。CA/Browser Forum 基线要求中该条规则的原文,本次报道并未取得:这条规则在此只以 DigiCert 的描述出现,下文也不判断这次延期是否符合规则。

下一份文件让时钟现形,也让它变成一次决定。「The 24 hours expired at 22:36 - 24 hours from when we had the serial numbers」(Mozilla Bugzilla 1910805)。这句话既定下了一个期限,又同时承认这个期限立在一个选择之上:哪件事开始计算这 24 小时。DigiCert 自己的报告点出了这一模糊之处,却没有把它解决。

之后发生的不是错过期限,而是移动期限。同一份报告记录了在讨论客户影响、可能的法律行动与特殊情况之后,决定把吊销推迟最多 120 小时(Mozilla Bugzilla 1910805)。文件里没有第三方批准、命令或推翻这项决定的记录。

新的截止时间落在状态页上:「All certificates impacted by this incident, regardless of circumstances, will be revoked no later than Saturday, August 3rd 2024, 19:30 UTC」(DigiCert Status)。同一份历史记录称,已识别的 TLS 证书于 2024 年 8 月 3 日约 19:30 UTC 被吊销。这些时间戳来自运营方;本次未取得针对相关序列号的独立吊销确认,因此这里的吊销记录是义务方对自己工作的陈述。

还有一处细节值得再看一眼,因为它说明了公开事件页面到底是什么。该页发布于 2024 年 7 月 29 日,标注 2024 年 8 月 4 日更新,如今要求受影响的客户在 2024 年 8 月 9 日 20:30 UTC 之前更换证书(DigiCert 事件页面)。那是后来的更新,不是最初的期限。今天读到它的人,看到的是一份在事件仍在进行时被反复改写过的文档的最终版本。

这份档案里没有的是外部裁决。本次简报查阅的四份文件——DigiCert 的事件页面、它的两份 Bugzilla 报告以及它的状态历史——当中都没有出现 Mozilla 根计划或浏览器厂商的执法行动、投票或后续后果,本文也不主张任何执法结论。

这次修复中可靠的部分是真实的。被吊销的序列号可以被观察,过期证书连不上,更换指令可以被执行。无法从外部核实的那部分,恰恰是决定了日程的部分:哪件事启动了时钟、为什么延期是五天而不是一天、以及任何有权管辖该规则的一方是否同意。DigiCert, Inc. 在本刊名录中有一则条目;条目记录的是一种机构层面的存在,而不是对验证做法的评判。

记录呈现出的运营方,披露得快,公开为自己辩护,然后遵守了自己给自己写下的期限。它同时也显示:期限之所以动了,是因为义务方动了它。