RedHat 6.2 VM
我刚刚在正在运行的 Apache 2.2中的站点/虚拟主机中更新了 Multicert 颁发的公共 X.509 证书。我们称之为https://www.multicert.com。我使用 Chrome 访问该站点的客户端计算机正在运行Debian 9
。
令我惊讶的是,该证书在 Firefox Quantum 60.2.0esr(64 位)和 Safari 中也获得了批准/绿色,但是 Chrome 69.0.3497.92 现在抱怨该站点不安全(而在使用旧证书之前它是好的)。
我检查了 Apache 配置,一切似乎都很好。我还检查了 X.509 证书链和根,一切似乎都正常。
我们还为类似配置的站点同时颁发了另一个公共证书,但是,它是颁发的Comodo
而不是颁发Multicert
的,并且在这个站点中,Chrome 可以很好地使用该证书,我们称之为https://www.digicert.com
如果我恢复到旧证书,Chrome 会再次工作,但是我不能就这样离开它,因为它可能会在明天被撤销,并且在几天后到期。
我们在带有 Comodo 证书的站点中注意到的唯一变化是在 Chrome 中,当单击证书时lock->Certificate-details
,我们在 Extensions 下有一个带有标识符的新字段OID.1.3.6.1.4.1.1.11129.2.4.2
这里发生了什么?
给定 OID
.1.3.6.1.4.1.1.11129.2.4.2
,我发现了一篇相关的 Let's Encrypt 文章Engineering deep dive: Encoding of SCTs in certificate我开始对该主题进行一些调查,最终发现谷歌从 2018 年 5 月 1 日开始在 Chrome 中为所有类型的 X.509 证书强制执行证书透明度。
来自Google Chrome 中的证书透明度强制执行
来自Chrome 2018 年 4 月之后需要 CT
所以从证书透明度,一个介绍
所以事实证明我的两个站点,一个(例如:www.digicert.com)在证书中直接具有 SCT X.509 扩展,并且不需要在服务器端进行设置修改。
在另一个站点(例如:multicert.com)上,CA 操作员选择使用 X.509 装订,因此,Apache Web 服务器需要更改配置。
我还在 Digicert 上找到了一篇关于Apache 的 OCSP 装订的文章
因此,要获得具有 OSCP 装订工作的站点,我需要:
Apache 版本高于 2.3.3
与 CA OCSP 服务器通信的 VM
添加到虚拟主机:
在 <virtualhost...> 指令之外
在 <virtualhost...> 指令内
并重新启动 Apache。
在使用 Multicert 颁发的 X.509 证书对站点进行这些更改之后,Chrome 表示该证书在两个站点中都有效。
另请参阅Chrome Linux 未显示 X.509 扩展、SCT
更多技术细节
我还被问到 2018 年 5 月 1 日的时间门槛是如何规定的,以及旧证书会发生什么情况。由于在线上缺乏更多明显的细节,我使用以下命令从https://chromium.googlesource.com/chromium/src/下载了 Chromium 源代码:
对于那些对证书透明度功能感兴趣的人,更有趣的目录似乎是
components/certificate_transparency/
最有趣的 doc 文件net/docs/certificate-transparency.md
有趣的摘录来自
net/docs/certificate-transparency.md
注意:有趣的是,RFC 6292被定义为实验性的
至于 2018 年 5 月 1 日的时间开始日期,Chromium 代码中有特定的硬编码实例(Chrome 共有),定义了过渡时将出现在 Chrome/Chromium 代码上的截止日期年。这样就解释了 2018 年 5 月 1 日之前颁发证书的不同行为。
从服务/网络/network_context.cc:
从组件/certificate_transparency/chrome_ct_policy_enforcer.cc:
Adenda:基于我在进行这项调查后发现的一些内容,详细信息如下:Chrome Linux is not shown an X.509 Extension, SCT
https://www.digicert.com的 SCT 扩展
https://www.multicert.com的 OCSP 定义