除了 debian9 需要,其他几乎不用了。做脚本的适配所有场景
以下是 chatGPT 的回复。 这是一个很经典的 Debian 9(Stretch)时代遗留问题,核心原因是:
👉 系统内置的 CA 根证书太旧,无法验证现在常见的 HTTPS 证书链
我们拆开讲。
✅ 本质原因
Debian 9 发布于 2017 年**,它自带的:
ca-certificates- OpenSSL
- GnuTLS
版本都非常老。
而现在大量网站:
- 使用 **Let’s Encrypt 新链
- 使用 ISRG Root X1
- 使用 ECC 证书
- 使用更新的中间证书链
Debian 9 默认信任库里:
👉 缺少或不完整包含这些新根证书
结果就是:
wget https://example.com会报:
ERROR: cannot verify example.com's certificate所以你只能绕过验证:
wget --no-check-certificate✅ Debian 10+ 为什么没问题?
Debian 10 (Buster, 2019) 以后:
- 更新了 ca-certificates
- 更新了 OpenSSL / GnuTLS
- 默认已经包含 Let’s Encrypt 新根
因此 TLS 验证可以正常通过。
✅ 典型错误示例
Debian 9 上常见:
ERROR: The certificate of 'xxx.com' is not trusted.
ERROR: The certificate of 'xxx.com' doesn't have a known issuer.✅ 正确解决方案(不建议长期用 –no-check-certificate)
🔹 方法一(推荐):更新 CA 证书
apt update
apt install --reinstall ca-certificates
update-ca-certificates如果源还能用,这一步往往就解决。
🔹 方法二:手动升级 ca-certificates
apt install ca-certificates确认版本:
dpkg -l ca-certificates应 ≥ 2021xx
🔹 方法三:手动加入 ISRG Root X1
wget https://letsencrypt.org/certs/isrgrootx1.pem
cp isrgrootx1.pem /usr/local/share/ca-certificates/isrgrootx1.crt
update-ca-certificates✅ 为什么还能“连得上”却提示证书错误?
TLS 分两步:
- 建立加密连接
- 验证对方身份
Debian 9:
✔️ 能加密 ❌ 不认识颁发机构
所以只是“身份不可信”。
⚠️ 为什么不建议长期用 –no-check-certificate?
等于告诉 wget:
谁给证书我都信
风险:
- 中间人攻击
- 劫持下载
- 文件被替换
在自动化脚本里是安全隐患。
✅ 进阶判断:是不是 CA 过期导致
测试:
openssl s_client -connect google.com:443如果看到:
Verify return code: 20 (unable to get local issuer certificate)就是证书库太旧。
✅ 终极建议
如果这台 Debian 9 还能长期使用:
👉 强烈建议升级系统到 Debian 11 / 12
Debian 9 已 EOL,多数仓库也已迁移归档。
🧠 一句话总结
Debian 9 需要 –no-check-certificate 是因为它的根证书库太老,不认识现在互联网使用的新证书链;Debian 10+ 已更新证书库,所以不需要。
如果你愿意,我可以教你一步一步把这台 Debian 9 的 CA 信任链修好,或者给你一套最小风险的证书补丁方案。





























































