You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

TLS请求提示证书颁发者不受信任,yum更新及HTTPS请求失败求助

解决TLS证书信任错误:Peer's certificate issuer has been marked as not trusted by the user

我帮你梳理下这个TLS证书信任问题的排查和解决思路——你遇到的这个错误核心是系统不信任目标证书的签发机构,哪怕单独导入Google的证书也没用,大概率是系统根证书库出了问题,或者证书信任链有断裂。下面结合你提到的certutil工具,给你具体的操作步骤:

一、先用certutil检查系统证书存储状态

RedHat系系统的证书通常存在NSS数据库里,我们先排查这里的根CA状态:

  • 列出系统信任的所有根CA证书:

    certutil -L -d /etc/pki/nssdb
    

    (如果你的系统NSS数据库路径不是这个,可以用find / -name "cert8.db"找一下,替换-d后的路径)

  • 重点看有没有常见的根CA(比如Google Trust Services、DigiCert Global Root CA、GlobalSign Root CA这些),如果这些根CA要么不存在,要么状态显示为“不信任”,那就是问题根源。

二、修复系统根证书库

优先修复系统默认的根证书包,这比手动导入单个证书靠谱得多:

  1. 重新安装系统默认根证书包
    RedHat系有ca-certificates包,先重装它恢复默认根证书:
yum reinstall ca-certificates

然后更新证书存储,让系统加载新的证书:

update-ca-trust extract
  1. 用certutil标记缺失/不信任的根CA
    如果刚才的命令执行后,还是有必要的根CA被标记为不信任,用certutil修改它的信任属性:
certutil -M -n "证书的具体名称" -t "C,," -d /etc/pki/nssdb

这里的-t "C,,"是把该证书标记为可信的根CA(C代表CA证书,后面两个逗号表示不需要额外的客户端/服务器信任属性)。

三、验证修复效果

修复后先测试基础的HTTPS连接:

curl -v https://google.com

看输出里的证书链信息,如果不再报 issuer 不信任的错误,说明修复有效。如果还是报错,注意看输出里哪一层证书不被信任,针对性导入对应的中间证书或根证书。

四、排查yum的特殊情况

yum本身依赖系统证书存储,但如果之前修改过yum配置(比如/etc/yum.conf或者/etc/yum.repos.d/下的repo文件),检查有没有这些异常配置:

  • 有没有设置sslverify=1sslcacert指向了错误的证书文件
  • 有没有自定义的证书路径覆盖了系统默认

可以临时把sslverify=0加到yum.conf里测试(别长期用,只是排查),如果能正常更新,说明还是系统证书信任的问题没解决。

提醒一句:手动导入单个网站的证书通常没用,因为HTTPS需要完整的信任链——从网站证书→中间证书→根证书,只要其中一环不被信任就会报错,所以修复系统根证书库才是根本解决方法。

内容的提问来源于stack exchange,提问作者Travis

火山引擎 最新活动