关于洛谷“证书错误”的解决办法

  • 版块站务版
  • 楼主soha 空气
  • 发帖时间2021-10-14 00:34

回复帖子

@soha 空气 2021-10-14 00:34 回复

各位同学、机房管理员或老师:

如果您的电脑因为“该证书尚未生效或已过期”或“该证书不是由受信任的根证书颁发机构颁发的”原因而无法访问洛谷,那么您需要看下面的内容,否则您可以关闭此页面。如果您所在的机房因为证书错误而无法访问洛谷,也请将本内容报告给您的机房管理员或老师。

为了洛谷的用户数据安全,我们早已为洛谷全站强制启用 TLS。而 TLS 的工作依赖证书,证书有效与否的验证又依赖证书信任链。位于证书信任链顶部的证书称为根证书。根证书被内置在操作系统里面,作为所有证书信任的根基。

就在刚过去的 9 月 30 日,有一个名为 DST Root CA X3 的根证书结束了他 20 年的寿命,正式退休,由它签发的证书都不再有效。这是您电脑会提示洛谷“证书错误”的原因。

如图,洛谷的证书就因为 DST Root CA X3 过期而失效了。

当然,在一个根证书退休前,人们通常会提早进行准备。DST Root CA X3 的继任者 ISRG Root X1 早已在 2015 年被准备好,并逐步添加到各个系统中。如上图,洛谷的证书其实是 ISRG Root X1 签发的,而不是 DST Root CA X3。DST Root CA X3 之所以会出现在这里,是为了根证书机构为了避免老系统不支持 ISRG Root X1,而使用交叉签名做的兼容。在系统中没有 ISRG Root X1 而 DST Root CA X3 过期的情况下,证书的信任链无法建立,也就导致洛谷“证书错误”。

在系统正常运作的情况下,根证书的退休并不会这么痛苦,因为作为系统内置的列表,它是会被自动更新的。但是您的机房可能由于断网,或者关闭了 Windows 的更新等原因,至少 6 年的根证书更新都没有收到,才会导致洛谷所使用的证书的信任链变得不可信。

本来,洛谷团队是想寻找目前证书的替代方案,但是我们考虑到所有根证书都会有过期的一天,换证书不如请您或者机房管理员、老师对系统进行更新。那么下面我将介绍 3 种解决方法:

  1. 让系统自己更新

如果是 Linux 系统,那么通过包管理器更新 ca-certificates 或者和根证书有关的包就行了。

Windows 系统则是打开 Windows 更新(或者使用某些“电脑管家”类软件),确保所有补丁包、更新包都已安装即可。

如果已确认所有更新包、补丁包都已安装完成,但依旧提示“证书过期”,请重启系统,这个方法应该在 99.99% 的情况下都起作用。如果重启完成后还是不行,再尝试下面的方法。

  1. 换用最新版 Chrome、Firefox

最新版的 Firefox 和 Chrome(不包括 Chromium 系浏览器)都有在软件中维护一套根证书,因此 Firefox 和 Chrome 的根证书库不像 IE、Edge 等浏览器受 Windows 更新的影响,所以使用最新版的 Chrome 或者 Firefox 也可以解决这个问题。在这种方法能解决问题的时候,我们依旧建议您保持系统更新。浏览器自带的根证书存储只能解决浏览器本身的问题,互联网上还有很多服务使用 ISRG Root X1 签发的证书,总是还会有别的软件遇到根证书问题的。

Chrome 下载地址:https://www.google.cn/chrome/

Firefox 下载地址:https://www.mozilla.org/zh-CN/firefox/new/

  1. 下载 ISRG Root X1 并将其安装到系统中(不推荐)

因为根证书是所有证书的信任根基,如果安装了一个坏人的根证书,那么坏人就可以利用这个根证书签发的证书来完成中间人攻击,你的流量就会被窃听。因此安装根证书是一个危险行为,当一个根证书被默认内置在系统里,说明这个根证书机构的操作都是经过权威机构对其进行审计的,如果他有任何违规签发行为,都会被立刻踢出根证书列表。

所以你如果必须要用这个方法来安装,请严格按照下面的步骤对证书进行检查,确保安装的是真的 ISRG Root X1。考虑到有问题的基本为 Windows 系统,因此这里只介绍 Windows 的方法。

首先从 https://letsencrypt.org/certs/isrgrootx1.der 下载得到 ISRG Root X1 这个根证书,并打开。点击“安装证书”,点击“下一步”,选择“将所有证书放入下列存储”,并选择证书存储为“受信任的根证书颁发机构”。

再次点击“下一步”和“完成”。会跳出一个提示框,这时请您确认证书名为“ISRG Root X1”,以及 SHA-1 值为 CABD2A79 A1076A31 F21D2536 35CB039D 4329A5E8

确认无误后,点击“是”,就完成了。如果还不起作用,可以重启浏览器或操作系统。

反馈
如果你认为某个帖子有问题,欢迎向洛谷反馈,以帮助更多的同学。



请具体说明理由,以增加反馈的可信度。