curl 提示 SSL certificate problem 怎么办?先更新 CA 证书

curl SSL 证书校验失败处理示意图

在服务器上用 curl 访问 HTTPS 地址,突然看到 SSL certificate problem: unable to get local issuer certificate,或者提示本地证书无法校验。

这种情况先别急着加 -k。它会跳过证书校验,临时测试可以,长期写进脚本里不合适。

先看系统 CA 证书包是不是太旧。Debian/Ubuntu 可以先更新并重新生成:

sudo apt update
sudo apt install --reinstall ca-certificates
sudo update-ca-certificates

RHEL、Rocky Linux、CentOS 这类系统可以用:

sudo dnf reinstall ca-certificates
sudo update-ca-trust

执行完再试一次:

curl -I https://example.com

如果只对某个测试服务失败,不要直接关掉校验。更稳的做法是把对应 CA 证书加入系统信任库,或者只在这次请求里显式指定:

curl --cacert ca.pem https://example.com

还有一个判断方法:加 -vcurl 正在使用哪个 CA store 或证书文件。如果显示的证书来源不对,通常就是安装包或环境配置问题。

curl 官方文档说明,默认会进行证书验证;校验失败时可以使用 --cacert 指定 CA 文件,也可以修正本机 CA store;-k / --insecure 会降低连接校验强度,不适合作为长期方案。参考:curl - SSL CA Certificates

最后提醒两点:第一,访问公开网站时,顺手检查服务器时间是否明显错误;第二,如果是自己维护的 HTTPS 服务,还要确认服务端有没有发完整证书链。

Caleb
Caleb管理员

上一篇:GitHub Actions 定时任务时间不对怎么办?先看时区
下一篇:已是最新的文章

留言评论

暂无留言
请先 登录 再评论,若不是会员请先 注册
取消
扫码支持