当前浏览器程序的详细信息,用于检查SSL /的撤销状态TLS 证书,包括跨浏览器测试。
介绍
检查SSL /的撤销状态TLS 颁发的证书 HTTPS 网站是网络安全中的一个持续问题。 除非将服务器配置为使用 OCSP装订,通过网络浏览器进行的在线吊销检查既缓慢又会损害隐私。 由于在线OCSP查询经常失败,并且在某些情况下(例如在强制门户网站中)是不可能的,因此浏览器通常以“软失败”模式实施OCSP检查,从而使其无法有效地阻止确定的攻击者。 (有关此问题的更完整的历史记录,请阅读SSL.com的文章, 页面加载优化:OCSP装订).
由于这些原因,Web浏览器已实现了一系列解决方案,以减少或消除在线吊销检查的需求。 提供商之间的确切详细信息有所不同,但是这些解决方案通常涉及从证书颁发机构(CA)收集已撤销证书的列表并将其推送到浏览器。
本文提供了主要桌面浏览器所采用的验证检查策略的高级摘要(铬系列, Firefox, Safari及 边缘),并将这些浏览器的响应与一些示例进行比较 吊销证书 由SSL.com托管。
Google Chrome
Chrome依赖 集合 用于吊销检查。 CRLSet只是被吊销证书的列表,该列表作为软件更新被推送到浏览器。 根据 Chromium Projects网站,Google生成CRLSets的过程是专有的,但是
CRLSets…主要是Chrome在紧急情况下可以快速阻止证书的一种方法。 作为辅助功能,它们还可以包含一些非紧急撤销。 后者的这些撤销是通过对CA发布的CRL进行爬网获得的。
以上陈述表明,至少 一些 低优先级的已撤销最终实体证书可能会以CRLSet结尾,但这是次要的考虑。
您可以通过导航到Chrome实例检查当前安装的CRLSet版本 chrome://components/
:
opera://components
。 如前所述 如下。,当前版本的Microsoft Edge浏览器也基于Chromium,并使用CRLSets。当前无法直接将Chrome配置为执行在线证书有效性查询。 但是,取决于操作系统,这些检查可能由OS使用的基础证书库执行。 (可以看出 如下。 在有限的浏览器测试结果中,我们发现具有相同版本号和CRLSet的Chrome的安装实际上对Windows和macOS上的两个吊销证书的响应不同。)
Mozilla Firefox浏览器
与Google一样,Mozilla维护着一个集中的撤销证书列表,称为 一个CRL。 OneCRL是由Mozilla的根程序中的CA吊销的中间证书的列表,并在应用程序更新中推送给Firefox用户。 关于最终实体证书,Mozilla的 撤销计划 指出:“将来,一旦初始实施可行,我们可能会考虑使用OneCRL涵盖EE证书,可能最初将重点放在特定类别(例如EV证书)上。”
可以将OneCRL下载为JSON对象 这里。,或以网页形式查看 文件.
与Chrome不同,Firefox的默认设置还会查询OCSP响应者,以确认SSL /TLS 证书。 (您可以在Firefox的安全偏好设置中更改此设置。)
但是,由于OCSP查询失败非常常见,因此Firefox(与其他浏览器一样)实现了“软失败”策略。 如果需要,可以通过导航到进行严格的OCSP检查 about:config
和切换 security.OCSP.require
至 true
.
苹果Safari
Bailey Basile在她的2017年WWDC演讲中谈到了苹果当前的撤销方法, 您的应用程序和不断发展的网络安全标准。 Apple从其设备上受信任的CA收集证书吊销信息,并将其全部聚集到一个捆绑软件中,然后由Apple的客户端软件定期检索(听起来像是熟悉的计划吗?)。
当客户端应用程序遇到Apple列表中显示的证书时,它将执行OCSP检查,以确认该证书实际上已被吊销(除非服务器提供订正的OCSP响应)。 请注意,仅在Apple已经认为已撤销的证书的情况下才进行在线OCSP检查。 未检查从Apple检索的捆绑软件中未列出的证书。
提供了Apple吊销列表和解析它的代码的链接。 这里。.
微软边缘
Windows在名为的文件中维护已撤销或已列入黑名单的证书的列表 disallowedcert.stl
。 这 博客文章 提供有关使用PowerShell转储文件内容的信息。 文件 还提供有关特定证书是否在 disallowedcert.stl
.
与Firefox一样,Windows默认设置为检查证书吊销。 您可以在 “Internet属性” 控制面板:
但是,Edge的当前(基于Chromium)版本(例如Chrome)依赖于CRLSets进行吊销检查,并在我们的测试中显示 如下。 与Internet属性中的吊销检查设置无关。 (请注意: 在2019年XNUMX月完成的这些测试的早期版本中,Internet Explorer和Edge的Chromium之前版本 做了 请按照“ Internet属性”中的这些设置进行操作。)
浏览器之间的差异
由于SSL.com维护着一组托管示例撤销证书的Web服务器,因此我们决定针对一系列台式机浏览器进行测试。这项小型而又不十分严格的科学测试于23年2020月XNUMX日进行。使用的浏览器为:
- Chrome 88.0.4324.182,CRLSet版本6444(macOS 10.15.7)
- Chrome 88.0.4324.182,CRLSet版本6444(Windows 10 Pro)
- Edge 88.0.705.74,CRLSet版本6444(Windows 10 Enterprise)
- Firefox 86.0 – OCSP查询(macOS 10.15.7)
- Firefox 86.0 –关闭OCSP查询(macOS 10.15.7)
- Safari 14.0.3(macOS 10.15.1)
此外,我们测试了Windows中的Chrome和Edge,并在“ Internet属性”控制面板中禁用了在线吊销检查,并且(对于Chrome,Firefox和Edge)(对于Chrome,Firefox和Edge)检查了相关证书是否被特定浏览器程序中的已撤销 文件.
Chrome(macOS) | Chrome(Windows) | 边缘(Windows) | Firefox(Mac)(启用OCSP) | Firefox(Mac)(关闭OCSP) | Safari(Mac) | |
---|---|---|---|---|---|---|
撤销了rsa-dv.ssl.com | 已撤销 | 未撤销 | 未撤销 | 已撤销 | 未撤销 | 已撤销 |
撤销了rsa-ev.ssl.com | 已撤销 | 已撤销 | 已撤销 | 已撤销 | 未撤销 | 已撤销 |
吊销ecc-dv.ssl.com | 已撤销 | 未撤销 | 未撤销 | 已撤销 | 未撤销 | 已撤销 |
吊销ecc-ev.ssl.com | 已撤销 | 已撤销 | 已撤销 | 已撤销 | 未撤销 | 已撤销 |
讨论结果
Chrome: 在Windows上,Chrome错误地显示了两个已撤销的证书(撤销了rsa-dv.ssl.com 和 吊销ecc-dv.ssl.com)视为有效,其他则视为已撤销。 在操作系统中禁用验证检查不会更改此响应。 有趣的是,这四个证书在CRLSet中均未显示为已撤销 文件 在测试时,提出了有关Chrome的吊销检查流程的其他问题。 在macOS上,Chrome正确地显示了所有四个证书已被吊销,这说明了基于Chrome行为的基于平台的差异。
边缘: 当前的(基于Chromium)版本的Edge已镜像Chrome 撤销了rsa-dv.ssl.com 和 吊销ecc-dv.ssl.com 有效。 与Chrome一样,无论是否在操作系统中启用了验证检查,Edge都显示相同的结果。 四个证书中没有一个显示为 disallowedcert.stl
on 文件.
Firefox: 从OneCRL对中间证书的声明中可以预期,Firefox仅在浏览器首选项中启用了OCSP查询的情况下,才认可所有四个证书被吊销,但是如果禁用了OCSP查询,则认为这四个证书都有效。 (请注意: 所有这四个被撤销的最终实体证书都是从有效的,未被撤销的中间体发出的。)与Chrome一样, 文件 显示没有证书被OneCRL吊销。
Safari: macOS上的Safari正确地将所有四个证书识别为已撤销。 文件 不显示Apple吊销信息,并且我们也没有检查这些特定证书是否被Apple吊销。
结论
结果似乎表明,对于桌面Web浏览器来说,吊销仍然是个问题(移动设备代表了一个完全不同的世界,但这是另一篇文章的主题)。 必须启用(缓慢,不安全)在线OCSP检查,才能将证书识别为Firefox中的已吊销,而无论操作系统是否启用了吊销检查,Chrome和Edge都无法在Windows上识别两个吊销的证书。
对于网站所有者而言,明智的做法是假设各种浏览器程序都集中在高优先级/紧急事件,例如被撤销的根证书和中间CA证书,并且花园式最终实体证书的撤销很可能在未引起注意的情况下被通过。无限期。 因此,实施 OCSP装订和必须装订 似乎是确保最终用户收到有关撤销最终实体证书的准确信息的最私密,安全和有效的方式。
SSL.com提供了多种 SSL /TLS 服务器证书 用于HTTPS网站。