menu LittleJake's Blog
color_lens
avatar
Jake Liu
Never Settle
creative commons by-nc-sa
hit
Category
keyboard_arrow_down

© 2024 LittleJake's Blog.

萌ICP备20223020号

开发环境清华源出现证书过期不可信的情况

前言

开发环境使用WSL Ubuntu系统,由于开发需要,apt安装软件包时出现。
apt安装

Failed to fetch https://mirrors.tuna.tsinghua.edu.cn/ubuntu/pool/universe/p/poco/libpocodataodbc62_1.9.2-3ubuntu3_amd64.deb  Certificate verification failed: The certificate is NOT trusted. The certificate chain uses expired certificate.  Could not handshake: Error in the certificate verification.

打开清华源的网站,发现证书一切正常。同时看见,证书已经在2021年9月26日续期了。
清华源https证书

问题来了,查询到let's encrypt网站发现10月1日出现了这么一条:Resources for Certificate Chaining Help,意思是根证书要到期了,还使用了这个词:big change。
根证书

那么问题来了,根证书过期为何会有巨大的影响?

根证书

根证书存放在系统下,由系统进行管理。如果根证书未及时的进行更新,就会出现证书过期的情况导致信任链被破坏,无法访问HTTPS的情况。

linux的ca-certificates包内包含一系列信任的根证书(firefox)。具体可以参考CA Certificates In Firefox(信任根证书列表),CA-Certificates(ca-certificates包介绍)。

CA证书

一个网站使用的证书,是经过CA进行私钥签名的。你需要使用CA公钥对网站证书进行解密,才能使用该网站证书通信。(当然,CA证书也要通过颁发CA证书的根证书来验证)

CA公钥是存放在哪里呢?

-- 你的浏览器里。

这一过程,涉及到了证书信任链的问题。

信任链

类似TPM的信任链

根证书->CA证书->颁发的网站证书

这就是为什么你想要安装HTTPS的广告过滤器还要安装根证书的原因。

广告过滤器充当MITM角色,在用户和网站之间把广告过滤了,然后在发给用户。用户看到的HTTPS证书颁发者都是由你信任的广告过滤器的根证书颁发,因此形成了一个信任链,不会报错HTTPS不可信。
AdGuard证书

解决方法

根据网络上的解决方法,发现更新ca-certificates不可行。

有一下三个方法。

  1. 选择将apt源回退为http
  2. 选择非let's encrypt证书的服务器解决。
  3. 执行sudo update-ca-certificates更新证书(存疑)

sudo update-ca-certificates更新后恢复

后记

let's encrypt根证书过期的问题,较大程度的影响了linux的服务器,实际对Windows的影响不大(Windows的证书更新较为透明?)。

Buy me a beer
Jake Liu
Never Settle

Title: 开发环境清华源出现证书过期不可信的情况

Author: Jake Liu

Origin:

Creative Commons License

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) For any re-post you must give appropriate credit.

文章遵循CC许可 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 转载请注明出处

Tag:根证书, 网站证书, let's encrypt, 清华源, 证书过期, ca-certificates, 信任链

评论区

Add a new comment.

Theme