curl执行SSL_ERROR_SYSCALL连接错误,求准确解决方案
解决curl: (35) OpenSSL SSL connect: SSL_ERROR_SYSCALL错误的可行方案
先排查网络基础连通性
- 用
ping 目标域名和traceroute 目标域名(Linux)/tracert 目标域名(Windows)测试链路,确认是否存在网络丢包、路由中断的情况。 - 检查本地防火墙、公司网关或代理服务器是否拦截了443端口(HTTPS默认端口),可以临时关闭本地防火墙,或者切换到手机热点这类外部网络验证。
调整curl的SSL相关参数
- 强制指定SSL/TLS版本:部分服务器仅支持特定版本,执行
curl -v --tlsv1.2 https://目标URL或curl -v --tlsv1.3 https://目标URL,-v会输出握手细节,方便定位版本兼容问题。 - 临时跳过证书验证(仅用于测试,生产环境绝对禁用):执行
curl -k https://目标URL,如果成功,说明是本地证书信任问题,需要将目标服务器的CA证书导入系统信任库。
更新curl与OpenSSL版本
- 先查看当前版本:执行
curl --version和openssl version,如果版本过旧(比如curl低于7.60、OpenSSL低于1.1.1),存在已知SSL兼容漏洞,建议更新。 - 系统更新命令:
- Debian/Ubuntu:
sudo apt update && sudo apt install curl openssl - CentOS/RHEL:
sudo yum update curl openssl
- Debian/Ubuntu:
排查DNS解析问题
- 刷新本地DNS缓存:Linux执行
sudo systemd-resolve --flush-caches,Windows执行ipconfig /flushdns,避免解析缓存导致的错误。 - 直接用IP访问验证:如果知道目标服务器的IP,执行
curl https://目标IP --resolve 目标域名:443:目标IP,排查是否是DNS解析到了错误的服务器。
内容的提问来源于stack exchange,提问作者prial joshi
相关产品推荐
相关产品推荐

