你在后台点“检查更新”或执行 git pull、apt update、pip install --upgrade 时,突然弹出 SSL connection failed、unable to get local issuer certificate 或 Certificate verify failed —— 别急,这不是服务器崩了,大概率是你本地环境的 SSL 信任链出了岔子。
证书过期或系统时间不对
SSL 证书有生效时间。如果电脑系统时间比实际晚了几天(比如 BIOS 电池没电、虚拟机挂起后恢复没同步时间),浏览器和命令行工具会直接拒接握手。打开终端输:
date看看输出是不是明显不准。Mac 或 Linux 可以运行:sudo ntpdate -s time.apple.comWindows 用户右键任务栏时间 → “调整日期和时间” → 开启“自动设置时间”。公司网络或代理在中间“掺和”
不少企业用自签名证书做 HTTPS 解密审计(比如深信服、绿盟网关),你连内网 Wi-Fi 或走公司代理时,系统默认不信任它的根证书。此时 curl https://github.com 可能成功,但 git clone 就报 SSL 错误——因为 Git 默认校验证书链,而 curl 默认可能跳过。临时验证可加参数:
git -c http.sslVerify=false pull但别长期开着,这是安全缺口。正确做法是把公司 CA 证书导出,加进系统信任库或 Git 配置:git config --global http.sslCAInfo "/path/to/company-ca.crt"OpenSSL 版本太老,不认新证书
旧版 OpenSSL(比如 1.0.2 及更早)不支持 Let's Encrypt 新的 ISRG Root X1 交叉签名,而 GitHub、PyPI、npm registry 等早已切换。Ubuntu 16.04、CentOS 7 默认就卡在这儿。查版本:
openssl version若低于 1.1.1,升级它:# Ubuntu/Debian
sudo apt update && sudo apt install openssl# CentOS/RHEL 7(需启用 EPEL)
sudo yum install epel-release
sudo yum update opensslPython pip 拉包失败:不是网络问题,是 certifi 没跟上
很多 Python 项目用 pip install 报错:SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed
这是因为 pip 依赖的 certifi 包证书列表陈旧。不用卸载重装 pip,直接升级证书库:
pip install --upgrade certifi再试一次。如果还报错,手动指定路径:pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org requests(仅临时应急,不建议设为全局)/etc/ssl/certs 下缺东西?别乱删
Linux 用户有时会发现 /etc/ssl/certs/ca-certificates.crt 文件空或损坏。别手欠直接删!先备份:
sudo cp /etc/ssl/certs/ca-certificates.crt{,.bak}然后重建信任库:sudo update-ca-certificatesDebian/Ubuntu 系统会自动合并所有启用的 PEM 证书;RHEL/CentOS 用:sudo update-ca-trust