当前位置:网站首页 > 技术教程 > 正文

Let's Encrypt 网站“证书不受信任、已过期”解决办法

作者:熊猫畔日期:2021-10-07 03:30:56分类:技术教程

最近需要在服务里部署一些项目,系统环境是 Debian 9 x64,运行脚本后,无故终止。排除网络问题,查看报错,定位到是与某些必要组件的网站连接出现了错误。

本 Linux 系统连接由“Let's Encrypt”颁发的证书的 https 网站,出现“证书不受信任、已过期”问题的最佳解决方案

用 wget 下载任何由 Let's Encrypt 签发证书的 https 网站的内容,发生报错:

The certificate of 'www.xxx.xxx' is not trusted.

The certificate of 'www.xxx.xxx' has expired.

使用 curl 等工具连接也会报错。

wget需要加--no-check-certificate

即使按网传方法,安装“ca-certificates”也无解。大量旧 Linux 系统,在2021年9月30日之后,都会面临此问题

Ubuntu 16.04 解决方法:

用户在2021年5月19日反馈了这个 bug,官方发布重新编译过的 OpenSSL 1.0.2g 解决了这个问题

通过官方源将 OpenSSL 组件更至最新即可。在2021年7月28日之后全新安装的 Ubuntu 16.04,也不会再碰到此问题

Ubuntu
apt-get update
apt-get install openssl -y
Centos

Debian 8 Debian 9 解决方法:
在证书配置文件中,删除“DST_Root_CA_X3”证书,并重载根证书配置:

rm -rf /etc/ca-certificates/trust-source/DST_Root_CA_X3.pem
更新证书信任列表配置:
update-ca-trust

Centos

yum update ca-certificates-y

可能涉及到的 Linux 发行

CentOS 7 与 RHEL 7 及更旧本;

Amazon Linux 和 Amazon Linux 2;

Ubuntu 14.04 及更旧本;

Debian 8、Debian 9 等更旧本;

Android 4.0 及更旧本;

任何使用 OpenSSL 1.0.X 本,且官方源未发布针对 OpenSSL 1.0.X bug 修复的二进制编译文件的其他 Linux 衍生本。

对于其他 Linux 发行,解决问题的核心思路就是:

1. 删除系统内置根证书信任区,或证书管理配置文件中的“DST_Root_CA_X3”证书;

2. 重载证书管理配置。

后果同样为失去兼容旧系统,具体命令和方法请自行探究。

sshot-262.png