2026-03-27 11:11:24
curl报错35通常表示SSL连接失败,主要与SSL证书验证问题相关,可通过升级软件、校准系统时间、验证服务器证书或(临时)忽略验证来解决。 以下是具体分析和解决方法:
一、错误原因分析软件版本过旧:过时的curl或OpenSSL库可能无法兼容最新的SSL协议或证书格式,导致验证失败。例如,旧版本可能不支持TLS 1.2/1.3或某些新型证书链。
系统时间错误:SSL证书包含有效期(起止时间),若系统时间不准确(如时间滞后或超前),证书会被判定为“未生效”或“已过期”,从而触发验证失败。
服务器证书问题:目标服务器的SSL证书可能存在以下问题:
过期:证书已超过有效期。
链路不完整:中间证书缺失,导致证书链无法完整验证。
被吊销:证书因泄露或违规被CA吊销。
域名不匹配:证书中的域名与访问的URL不一致(如使用了通配符证书但未覆盖子域名)。
升级curl和OpenSSL:更新到最新版本可修复已知的SSL兼容性问题。
Debian/Ubuntu系统:sudo apt update && sudo apt upgrade curl openssl
CentOS/RHEL系统:sudo yum update curl openssl
macOS(Homebrew):brew update && brew upgrade curl openssl
校准系统时间:确保系统时间与网络时间同步。
Linux系统(使用NTP服务):sudo timedatectl set-ntp true # 启用NTP同步sudo timedatectl status # 检查状态
手动设置时间(临时):sudo date -s "YYYY-MM-DD HH:MM:SS" # 替换为当前时间
Windows系统:通过“控制面板 > 日期和时间 > 互联网时间”选项卡,选择“更改设置”并同步。
验证服务器证书:
直接访问目标URL:使用浏览器访问目标URL,检查证书是否显示为“有效”。若浏览器提示证书错误,说明服务器配置存在问题。
使用OpenSSL命令检查:openssl s_client -connect example.com:443 -showcerts # 替换为实际域名输出中需关注:
证书有效期(Not Before/Not After)。
证书链是否完整(从服务器证书到根CA的完整路径)。
域名是否匹配(Subject Alternative Name字段)。
联系服务器管理员:若证书过期、被吊销或链路不完整,需由服务器管理员重新签发或配置证书。
忽略SSL证书验证(仅限调试):不推荐在生产环境中使用,但可用于临时测试。
curl --insecure或通过-k参数(同--insecure):
curl -k若问题仍未解决,请提供以下信息以便进一步诊断: