TLS请求提示证书颁发者不受信任,yum更新及HTTPS请求失败求助
我帮你梳理下这个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要么不存在,要么状态显示为“不信任”,那就是问题根源。
二、修复系统根证书库
优先修复系统默认的根证书包,这比手动导入单个证书靠谱得多:
- 重新安装系统默认根证书包
RedHat系有ca-certificates包,先重装它恢复默认根证书:
yum reinstall ca-certificates
然后更新证书存储,让系统加载新的证书:
update-ca-trust extract
- 用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=1但sslcacert指向了错误的证书文件 - 有没有自定义的证书路径覆盖了系统默认
可以临时把sslverify=0加到yum.conf里测试(别长期用,只是排查),如果能正常更新,说明还是系统证书信任的问题没解决。
提醒一句:手动导入单个网站的证书通常没用,因为HTTPS需要完整的信任链——从网站证书→中间证书→根证书,只要其中一环不被信任就会报错,所以修复系统根证书库才是根本解决方法。
内容的提问来源于stack exchange,提问作者Travis




