麒麟系统出现ssl证书错误是因缺少可信ca证书,需先检查并修复证书文件路径,再执行update-ca-trust重建信任库,最后按需导入自定义根证书并验证生效。

麒麟系统运行软件时提示“SSL certificate problem”“unable to get local issuer certificate”或“SSL: CERTIFICATE_VERIFY_FAILED”,说明系统缺少可信CA证书,导致HTTPS连接、软件源更新、Python脚本调用API等操作在证书链验证环节失败。
检查系统CA证书文件是否存在且完整
打开终端,执行:
ls -l /etc/ssl/certs/ca-certificates.crt 2>/dev/null || ls -l /etc/pki/tls/certs/ca-bundle.crt 2>/dev/null
若两条命令均返回“没有那个文件或目录”,说明核心证书包已丢失;若返回文件但大小小于100KB(如仅几KB),大概率是空文件或损坏。
这一步必须先做——跳过会导致后续所有证书导入无效,因为update-ca-trust命令依赖基础目录结构和初始锚点。
执行:
sudo mkdir -p /etc/ssl/certs /etc/pki/tls/certs /etc/pki/ca-trust/source/anchors
确保三类主流路径全部存在,避免部分工具(如curl、dnf、python-requests)因路径缺失而静默降级或报错。
重建系统级CA信任库(桌面版 & 服务器版通用)
麒麟V10/V11无论Debian系(如Kylin Desktop V10 SP1)还是RPM系(如Kylin Server V10 Advanced),都使用update-ca-trust机制管理证书信任链。
第一步:触发系统证书库重建
sudo update-ca-trust force-enable && sudo update-ca-trust extract
第二步:验证生成结果
ls -l /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem /etc/ssl/certs/ca-certificates.crt 2>/dev/null
两个文件都应存在,且大小均大于150KB。若只有其中一个存在,说明系统识别为对应发行版类型有误,需手动软链接补全:
对于Debian系麒麟(ID_LIKE=ubuntu):
sudo ln -sf /etc/ssl/certs/ca-certificates.crt /etc/pki/tls/certs/ca-bundle.crt
对于RPM系麒麟(ID=kylin且含adv):
sudo ln -sf /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem /etc/ssl/certs/ca-certificates.crt
【软链接必须指向真实存在的文件,否则curl/wget仍会报CA路径错误】
导入自定义CA根证书(内网/政企私有CA场景)
当软件连接的是单位内网HTTPS服务、OA系统或私有镜像源时,其证书由内部CA签发,不在系统默认信任列表中,必须手动注入。
方法一:图形界面快速导入(仅限桌面版)
安装并启动kylin-certificate-manager:sudo apt install -y kylin-certificate-manager → 启动后点击“导入证书”→ 选择单位提供的root-ca.crt → 勾选“信任此证书用于识别网站、电子邮件和软件”→ 确认导入。
方法二:命令行精准注入(桌面版 & 服务器版均适用)
将证书文件(如my-root-ca.crt)复制到系统锚点目录:
sudo cp my-root-ca.crt /etc/pki/ca-trust/source/anchors/
立即执行:
sudo update-ca-trust extract
注意:证书文件必须是PEM格式(以-----BEGIN CERTIFICATE-----开头),不可为DER或PFX;文件名建议用.crt后缀,避免update-ca-trust跳过解析。
验证证书是否真正生效
① 测试系统级工具:
curl -I https://update.cs2c.com.cn 2>&1 | grep "HTTP/"
若返回HTTP/2 200或HTTP/1.1 200,说明CA链验证通过;若仍报“SSL certificate problem”,则证书未正确加载或URL已变更。
② 测试Python环境(常见故障点):
python3 -c "import requests; print(requests.get('https://httpbin.org/get', timeout=5).status_code)"
成功返回200即表示requests库已使用系统更新后的CA包;若报SSLError,则需额外配置:echo 'export REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt' >> ~/.bashrc && source ~/.bashrc
③ 测试软件源更新(关键业务验证):
sudo apt update(Debian系)或sudo dnf makecache(RPM系)
不再出现“Failed to download metadata for repo”或“Problem with the SSL CA cert”即为完成。











