curl报错“error 35”:SSL连接失败如何解决?

curl报错“error 35”:SSL连接失败如何解决?
最新回答
吖棒棒糖

2024-03-05 06:53:04

curl报错“error 35”通常表示SSL证书验证失败,可通过以下方法解决

一、确认错误原因

“error 35”是curl在建立HTTPS安全连接时,因SSL证书验证失败导致的错误。可能原因包括:

  • 服务器端SSL证书问题:证书过期、被吊销或与域名不匹配。
  • 客户端SSL库问题:openssl版本过低,不支持服务器使用的加密算法或证书类型。
  • 系统时间偏差:系统时间不准确,影响证书有效期验证。
  • 中间证书缺失:系统缺少服务器证书链中的中间证书,导致无法验证证书完整性。
二、针对性解决方案1. 检查并修复服务器端SSL证书问题
  • 操作步骤

    联系服务器管理员,确认SSL证书是否过期或被吊销。

    检查证书域名是否与请求的域名完全匹配(包括通配符和子域名)。

    若证书有问题,需重新申请或更新证书。

  • 适用场景:当错误由服务器端证书问题引发时。
2. 升级curl和openssl库
  • 操作步骤

    Linux系统

    使用包管理器升级,例如:sudo apt-get update && sudo apt-get upgrade curl openssl # Debian/Ubuntusudo yum update curl openssl # CentOS/RHEL

    macOS:通过Homebrew升级:brew update && brew upgrade curl openssl

    Windows:从官方网站下载最新版本安装。

  • 原理:更新后的curl和openssl包含更新的证书和更强的加密算法,可提升SSL连接处理能力。
  • 适用场景:客户端openssl版本过低或存在兼容性问题时。
3. 校正系统时间
  • 操作步骤

    Linux/macOS:使用date命令检查时间,通过ntpdate同步:sudo ntpdate pool.ntp.org # 同步网络时间

    Windows:在“设置”→“时间和语言”→“日期和时间”中启用自动同步。

  • 原理:SSL证书验证依赖系统时间,时间偏差会导致证书被误判为过期或未生效。
  • 适用场景:系统时间不准确时。
4. 补充中间证书
  • 操作步骤

    从证书颁发机构(CA)下载中间证书,并手动安装到系统证书存储中。

    Linux:将证书文件(如.crt)复制到/usr/local/share/ca-certificates/,然后运行:sudo update-ca-certificates

    Windows:通过“证书管理器”导入中间证书。

  • 原理:中间证书是证书链的关键环节,缺失会导致验证失败。
  • 适用场景:系统缺少中间证书时。
三、临时绕过验证(不推荐)

若仅需临时测试,可通过-k或--insecure选项跳过证书验证:

curl -k
https://example.com
  • 风险提示:此方法会降低安全性,仅建议在可信环境中使用。
四、验证解决方案

升级或修复后,重新运行curl命令测试是否解决:

curl
https://example.com

若仍报错,可结合-v参数查看详细错误信息:

curl -v
https://example.com
总结
  • 优先方案:升级curl和openssl、校正系统时间、补充中间证书。
  • 长期建议:保持系统和软件更新,定期检查证书有效性。
  • 临时方案:仅限测试环境使用-k选项。

通过以上步骤,可系统性解决curl报错“error 35”问题。