SSL/TLS握手失败:常见问题与解决方案

cmd命令执行报错完整如下

C:\WINDOWS\system32>curl -v https://zhongyuele.top/api/banner/getIndexBanner
* Host zhongyuele.top:443 was resolved.
* IPv6: (none)
* IPv4: 8.130.70.131
*   Trying 8.130.70.131:443...
* Connected to zhongyuele.top (8.130.70.131) port 443
* schannel: disabled automatic use of client certificate
* ALPN: curl offers http/1.1
* Recv failure: Connection was reset
* schannel: failed to receive handshake, SSL/TLS connection failed
* closing connection #0
curl: (35) Recv failure: Connection was reset
C:\WINDOWS\system32>

在这里插入图片描述

你运行的命令是:

curl -v https://zhongyuele.top/api/banner/getIndexBanner

从输出日志来看,已经成功解析域名并连接到服务器 IP 8.130.70.131:443,但在 SSL/TLS 握手阶段失败了:

Recv failure: Connection was reset
schannel: failed to receive handshake, SSL/TLS connection failed

🔍 一、错误分析

步骤日志信息含义
域名解析Connected to zhongyuele.top (8.130.70.131) port 443DNS 解析和 TCP 连接建立成功
SSL 握手开始schannel: disabled automatic use of client certificate客户端未使用客户端证书(正常)
协议协商ALPN: curl offers http/1.1支持 HTTP/1.1
握手失败Recv failure: Connection was resetSSL/TLS 握手过程中连接被服务器重置

总结:TCP 层连接成功了,但 HTTPS 的 SSL/TLS 握手失败,说明问题出在 SSL 配置或 Nginx 配置上


🧨 二、常见原因与排查建议

✅ 1. Nginx 没有正确配置 SSL/TLS

可能问题:
  • SSL 证书路径配置错误
  • SSL 证书格式不兼容(如 .pem.crt 混用)
  • SSL/TLS 协议版本或加密套件配置不当
排查方法:
  • 登录服务器检查 Nginx SSL 配置是否完整:

    ssl_certificate /etc/nginx/certs/zhongyuele.top.crt;
    ssl_certificate_key /etc/nginx/certs/zhongyuele.top.key;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    
  • 检查证书文件是否存在且可读:

    ls -l /etc/nginx/certs/
    cat /etc/nginx/certs/zhongyuele.top.crt
    

✅ 2. SSL 证书不可信或过期

可能问题:
  • 使用的是自签名证书
  • 证书已过期
  • 证书不包含目标域名 zhongyuele.top
排查方法:
  • 在浏览器中访问 https://zhongyuele.top,查看是否显示“不安全”
  • 使用在线工具检测证书有效性:

✅ 3. Nginx 服务异常或配置错误

可能问题:
  • Nginx 服务未重启导致配置未生效
  • 端口未监听或配置冲突
  • 请求没有进入对应 server
排查方法:
  • 检查 Nginx 是否运行:

    systemctl status nginx
    
  • 检查配置语法:

    nginx -t
    
  • 查看 Nginx 错误日志:

    tail -f /var/log/nginx/error.log
    

✅ 4. 防火墙/安全组限制

可能问题:
  • 阿里云安全组未放行 443 端口
  • 服务器防火墙阻止连接
排查方法:
  • 检查阿里云控制台安全组规则,确认已放行入方向 443 端口
  • 检查本地防火墙设置,尝试关闭后测试
  • 使用 telnetnc 测试端口连通性:
    telnet zhongyuele.top 443
    

✅ 三、临时绕过 SSL 校验测试接口

如果你想绕开 SSL 错误,仅用于测试目的,可以使用 -k 参数忽略证书验证:

curl -k -v https://zhongyuele.top/api/banner/getIndexBanner

如果此时请求成功,则说明问题是 由 SSL/TLS 配置引发的握手失败


📌 四、推荐解决方案总结

问题类型检查点方法
SSL/TLS 握手失败Nginx SSL 配置检查证书路径、协议版本、加密套件
证书无效证书合规性使用在线工具验证证书有效性
Nginx 服务状态Nginx 是否运行systemctl status nginx
防火墙限制端口是否开放检查安全组、系统防火墙
调试测试忽略 SSL 验证使用 curl -k 临时测试接口响应

🧪 五、附加测试建议

你可以通过以下方式进一步确认问题是否出在 SSL 握手上:

  1. 测试 HTTP 请求是否正常(绕过 HTTPS)

    curl -v http://zhongyuele.top:80/api/banner/getIndexBanner
    
  2. 使用 OpenSSL 测试 SSL 握手

    openssl s_client -connect zhongyuele.top:443
    

    如果出现 CONNECTED(00000003) 之后马上断开,说明 Nginx 没有正确返回证书或握手中间中断。


如果你方便贴一下你的 Nginx SSL 配置部分的内容,我可以帮你进一步判断具体哪里出错了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱的叹息

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值