Net Go Easy

使用排障

curl 证书错误60:怎样定位并恢复正常校验?

curl 提示 SSL certificate problem 时,按系统时间、目标证书、代理和信任来源分别排查;需要自定义 CA 时只对单次命令指定,不永久跳过校验。

· 更新于

先保留完整错误,不要急着加 -k

Linux 终端中看到 curl: (60) SSL certificate problem,先看后面的解释:缺少本地签发者、证书过期和主机名不匹配,不是同一种问题。请记下目标域名、错误文字和发生时间。报错并不说明“VPN坏了”,也不应直接通过关闭证书验证处理。

本文针对命令行 curl。先用 curl --version 确认当前程序;浏览器正常而 curl 失败时,两者使用的信任来源或网络路径可能不同。

1. 查看时间,再发一次最小请求

date -Is
curl --disable --connect-timeout 3 --max-time 10 --head https://example.com

把示例换成出错的网站根地址。先核对电脑时间是否明显错误;确认是时间问题时,通过系统日期设置恢复正确时间,再重试。--disable 放在第一位,用来排除个人 .curlrc 的额外选项,并不会取消环境变量代理。

只记录错误部分,不把完整账号链接或带凭据的调试日志公开。

2. 区分单个网站还是多个网站

观察 下一步
只有一个网站报证书过期或名称不符 比较地址栏是否输错域名、系统日期是否正确;两者正常时由站点维护方更换证书
多个普通 HTTPS 网站同时失败 继续检查系统时间、本机信任来源以及网络中是否存在代理
同一目标只有代理路径失败 核对代理是否使用组织证书,与管理方确认后再处理
浏览器正常,只有某个 curl 环境失败 确认是不是容器、另一台机器或不同 TLS 后端

有些单位网络会使用自己的证书链。不要把这一情况直接认定为攻击,也不要因此接受来源不明的 CA。

3. 有可信 CA 文件时,先做单次验证

如果网站或单位管理员通过你能确认身份的渠道提供了 CA 文件,先核对文件来源与指纹,再指定给这一次请求:

curl --disable --cacert ./trusted-ca.pem --connect-timeout 3 --max-time 10 --head https://example.com

trusted-ca.pem 是占位文件名,不是让你创建一个空文件。它必须是你已确认应信任的证书文件,而且目标域名也要匹配。命令结束后不会修改全系统信任库。

如果仍然报过期、名称不匹配或缺少链,保留新错误继续核对,不把 --cacert 理解成“强制成功”。系统信任库如何更新取决于发行版或组织管理方式,不要照搬其他系统的安装命令。

4. 怀疑代理时怎样做对照

可用代理检查脚本与教程对同一根地址比较继承代理与直连。只有在当前网络允许直连时,这个比较才有意义;也可能两条路径都报证书错误。

代理工具退出、改用另一个网络或指定 CA,都是不同变量。每次只改一个,才能知道哪一步改变了结果。

怎样算处理结束?

目标 HTTPS 请求在开启证书验证的条件下完成,才说明这个请求通过了相应验证。HTTP 401 或403还可能是登录、权限问题,应另外处理。

如果证书验证通过但返回401或403,证书这一步已经完成,接着处理目标的登录或访问权限;不再继续换CA文件。单次使用--cacert不会更改系统信任库,下次不用该参数即恢复默认信任来源。

参考资料

  • curl TLS证书验证说明 · 资料日期 2026-10-22
  • curl 使用手册 · 资料日期 2026-10-22