在服务器上用 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 还有一个判断方法:加 -v 看 curl 正在使用哪个 CA store 或证书文件。如果显示的证书来源不对,通常就是安装包或环境配置问题。
curl 官方文档说明,默认会进行证书验证;校验失败时可以使用 --cacert 指定 CA 文件,也可以修正本机 CA store;-k / --insecure 会降低连接校验强度,不适合作为长期方案。参考:curl - SSL CA Certificates。
最后提醒两点:第一,访问公开网站时,顺手检查服务器时间是否明显错误;第二,如果是自己维护的 HTTPS 服务,还要确认服务端有没有发完整证书链。




留言评论
暂无留言