如何看待 Mozilla 决定停止信任沃通 (WoSign) 和 StartCom 颁发的证书?

'Taking into account all the issues listed above, Mozilla’s CA team has lost confidence in the ability of WoSign/StartCom to faithfully and competently discharge the functions of a CA. Therefore we propose that, starting on a date to be determined in the near future, Mozilla products will no longer trust newly-issued certificates issued by either of these two CA brands.' docs.google.com/documen So…
关注者
521
被浏览
54295

34 个回答

信任,是一家公司的命脉,更不用说这是颁发安全证书的公司。
从 Mozilla 的报告可以看出来,Mozilla 关注的是故意造假和隐瞒。技术上的 bug 都是可以改正的,但对于规则的无视,对于 CA 绝对是致命的。
我觉得 Mozilla 的处罚挺合理,除了新签名至少一年不信任外,之前给 WoSign 提供审计报告的香港安永被永远列入了黑名单,而且如果 WoSign 还有倒签的事件出现,Mozilla 会立即并永远对其不信任。
---
更新下,这个处罚算不算重呢?大概率谷歌和苹果会跟进不信任。而证书是一年有效期,WoSign 至少被不信任一年,王 CEO 经常说的国内排名前十的电商和云厂商用户,也不会因为省这么点儿钱继续买 WoSign 的证书。
今天吃早饭时候基本上全文看了一遍,简单总结一下。

Mozilla 这个文档写的非常好,对于背景知识的介绍也很全,即使是非技术的人也能差不多理解是什么原因,所以有兴趣的人推荐都可以读一下。

整个文档 Mozilla 认为 WoSign 最严重的问题是伪造(或者说人为设置)了证书签发日期,有以下背景知识(基本是 Mozilla 介绍的,我尽量不加个人评价):
  • SHA1 摘要算法不够安全,替换者是 SHA256,浏览器们要求 CA 们从 2016.1.1 开始不允许签发 SHA1 摘要的证书。
  • 一份证书包含两个日期:notBeforenotAfter,分别指在某日期后/前生效。但是数字证书中没有对这两个日期做出具体要求。因此在实践中,notBefore 一般是证书创建时间(注意这两个值可以在创建时人为制定)。

浏览器们中(firefox,chrome)要求 notBefore 2016.1.1 后的证书不受信任。但是有些网站出于兼容性等因素考虑,仍然需要有 SHA1 证书进行工作。

接下来内容非常有趣,将 WoSign 签发的证书分为两类:
  • X 表示证书的 notBefore notAfter 的 小时、分钟、秒值相同(注意日期是不同的)
  • Y 表示 notAfter(也就是过期时间)是 2016.12.29 16:00 UTC
  • 这张图中绿色是 X 类证书,橘黄色是 Y 类证书的签发日期。可以发现 Y 类证书基本只在工作日签发,基本没有在周末签发。因此可以认定 Y 类证书是员工手动签发的。
  • 蓝色的条是 Y 类证书在周末签发的数量,注意最长的一个 2015.12.20 日(是一个周日),在这一天 Y 类证书被签发了 62 张,现在将这 62 张证书称为 "Macau certificates"

下面是这一天按小时分布的证书签发图
  • 这张图中橘黄色是其它 Y 类证书的签发小时分布情况。可以发现 Y 类证书基本都是在工作时间被签发的,甚至能看到午饭时间。。。(注意这里需要 +8 表示中国时间)
  • 蓝色是 "Macau certificates" 的时间分布比较均匀。

前面 Mozilla 认为 Y 类证书是人工签发的,而这一天却24小时基本都有证书签发。因此不会是有员工在这一天(周日)加班工作守在电脑前面签发证书,而是以后(2016年)签发的证书, notBefore 时间被人为设置在了这一天。

后面有一段比较无聊,不过是比较有用的证据。大概就是 Certificate Transparency(Google 的一个项目,certificate-transparency.org),要求证书在签发时保存真实的签发时间(SCTs)。WoSign 被发现有 6 个 "Macau certificates" 的 SCTs 记录与 notBefore 差距很大(10 到 28 天),而其它 WoSign 签发的 898 张 EV 证书中,最长差距也不过 51 个小时,其中大部分都是 3 小时。
同时有人发现将 notBefore 日期设置到 2015.12.20 这一天的功能似乎被写入了 SHA1 证书签发机制中,有人一不小心拿到了两张这种证书。

WoSign 回复说这几个证书是由于签发程序的一个 Bug 引发的,具体可以看 Wosign 的 final report (wosign.com/report/WoSig)

后面 Mozilla 通过一些技术分析:比如证书序列号生成机制类似,StartSSL 在系统升级后签发系统与 WoSign 有很多类似,在维护期间给 WoSign 的 CEO 个人博客签发了证书等情况,说明了下 WoSign 与 StartSSL 的关系。
认为他们并不是宣称的那样在收购后完全独立运作,而是 StartSSL 已经开始使用 WoSign 的基础设施。

再后面 Mozilla 介绍了如果有公司一定需要 SHA1 证书,如何申请豁免(需要浏览器厂商们讨论),并通过 Tyro 的例子说明 WoSign 给了他们两张修改过 notBefore 日期的泛域名证书。

-------------

总的来说在现有机制下 CA 拥有非常大的权力,因此有很多人在盯着他们,各种机制设置也是预防 CA 不小心犯错(证书吊销列表),或主动犯错。