问题:`curl: (35) OpenSSL SSL_connect: 连接被对方重置 in connection to 192.168.0.13` 是什么原因导致的?
该问题是使用 `curl` 命令访问 HTTPS 服务时常见的错误,通常发生在 SSL/TLS 握手阶段。主要原因包括:服务器端突然中断连接、SSL/TLS 版本或加密套件不兼容、服务器证书异常、中间设备(如防火墙、代理)拦截连接,或服务端程序异常终止。此外,客户端使用的 OpenSSL 版本与服务端不兼容也可能引发此问题。排查时应检查服务端状态、SSL 配置、网络环境及证书有效性,确保两端协议一致。
问题:`curl: (35) OpenSSL SSL_connect: 连接被对方重置 in connection to 192.168.0.13` 是什么原因导致的?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
Airbnb爱彼迎 2025-08-15 08:30关注一、问题现象
在使用
curl命令访问 HTTPS 服务时,出现如下错误信息:curl: (35) OpenSSL SSL_connect: 连接被对方重置 in connection to 192.168.0.13该错误通常发生在
curl尝试与目标服务器建立 SSL/TLS 连接的过程中,连接在握手阶段被中断,导致连接失败。二、常见原因分析
该错误的成因较为复杂,涉及多个层面。以下是常见的几种原因:
- 服务器端异常中断连接:服务端在 SSL 握手过程中主动关闭连接(如服务崩溃、超时、配置错误)。
- SSL/TLS 协议版本不兼容:客户端与服务端支持的协议版本不同(如客户端使用 TLS 1.1,而服务端只支持 TLS 1.2 及以上)。
- 加密套件不匹配:客户端和服务器没有共同支持的加密算法。
- 证书问题:服务器证书无效、过期、自签名未被信任或证书链不完整。
- 中间设备干扰:如防火墙、代理、NAT、负载均衡器等设备拦截或修改了 SSL 流量。
- OpenSSL 版本差异:客户端使用的 OpenSSL 版本与服务端不兼容,导致协议解析失败。
- 服务端程序异常终止:如 Nginx、Apache、Tomcat 等服务进程异常退出。
三、排查与诊断方法
为了准确诊断该问题,建议采用以下排查步骤:
步骤 操作 目的 1 确认服务端是否正常运行 检查服务端进程状态、日志、端口监听情况 2 使用 openssl s_client -connect 192.168.0.13:443测试连接查看 SSL 握手过程中的详细输出 3 检查服务端 SSL/TLS 配置 如使用 Nginx/Apache,查看 ssl_protocols和ssl_ciphers4 使用 curl -v https://192.168.0.13获取详细日志观察连接建立过程中的具体失败点 5 检查客户端 OpenSSL 版本 运行 openssl version并与服务端对比6 尝试不同 TLS 版本 使用 curl --tlsv1.2 https://192.168.0.13指定协议版本7 检查证书有效性 使用 openssl x509 -in cert.pem -text -noout查看证书详情四、解决方案建议
根据不同的排查结果,可以采取以下解决方案:
- 服务端问题:重启服务进程,确保端口监听正常,检查服务日志是否有异常。
- SSL/TLS 不兼容:升级 OpenSSL 客户端或服务端配置,确保双方支持相同协议版本。
- 加密套件不匹配:调整服务端
ssl_ciphers配置,确保包含客户端支持的加密套件。 - 证书问题:更新证书、安装中间 CA、使用
--insecure参数临时绕过证书验证(仅用于测试)。 - 中间设备干扰:关闭防火墙、代理,或使用
tcpdump抓包分析流量。 - OpenSSL 版本问题:升级 OpenSSL 至最新版本,或使用
curl -V查看支持的协议。
五、流程图:错误排查路径
graph TD A[开始] --> B[服务端是否运行正常?] B -->|是| C[检查 SSL/TLS 配置] B -->|否| D[启动服务并重试] C --> E[客户端与服务端协议是否一致?] E -->|是| F[检查证书是否有效] E -->|否| G[调整协议版本] F -->|有效| H[检查加密套件是否匹配] H -->|是| I[访问成功] H -->|否| J[调整加密套件] F -->|无效| K[更新证书或临时跳过验证] K --> L[访问成功]本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报