nginx ssl 报错?

nginx error.log日志一直报

SSL_read() failed (SSL: error:0A000126:SSL routines::unexpected eof while reading) while keepalive, client: 223.75.74.91, server: 0.0.0.0:443

错误,我使用pc 浏览器访问一切正常,nginx上还挂着给app访问的api接口,在app上会出现有的用户可以访问有的出问题这种情况。搜索了百度和谷歌都没找到问题所在。

https 证书是阿里云买的证书。nginx配置如下

 server {
       listen       443 ssl http2;
       listen       [::]:443 ssl http2;
       server_name  xx;
       root         /usr/share/nginx/html;
       
       client_max_body_size 100M;
       
       ssl_certificate "/etc/pki/nginx/aliyun_app.yiluxq.com/xxx.pem";
       ssl_certificate_key "/etc/pki/nginx/aliyun_app.yiluxq.com/xxx.key";
       ssl_session_cache shared:SSL:1m;
       ssl_session_timeout  5m;
       #TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
       ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
       ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
       #表示优先使用服务端加密套件。默认开启
       ssl_prefer_server_ciphers on;
       
       # Load configuration files for the default server block.
       include /etc/nginx/default.d/*.conf;
       error_page 404 /404.html;
           location = /40x.html {
       }

       error_page 500 502 503 504 /50x.html;
           location = /50x.html {
       }
   }

服务器系统版本:Rocky Linux release 9.1 (Blue Onyx)
nginx版本:nginx version: nginx/1.20.1
openssl版本:OpenSSL 3.0.1 14 Dec 2021 (Library: OpenSSL 3.0.1 14 Dec 2021)

阅读 2.7k
avatarAI BotBETA

这个问题可能是由于多种原因导致的,以下是一些可能的解决方案:

  1. 证书问题:确保您的 SSL 证书是有效的,并且与您的服务器配置兼容。如果证书有问题,可能会导致 SSL 握手失败,从而引发这个错误。
  2. 版本不兼容:根据错误信息,问题可能出在 SSL 协议版本上。尝试更改 ssl_protocols 指令以使用不同的 TLS 版本,或者更新 nginx 和 openssl 的版本,以确保它们与您的客户端兼容。
  3. 客户端问题:检查客户端(即访问 API 的应用程序)是否正确配置以使用 SSL。如果客户端没有正确配置,可能会导致 SSL 握手失败。
  4. 网络问题:可能存在网络问题,例如防火墙或安全组规则,阻止了 SSL 握手。确保您的网络配置允许 SSL 连接。
  5. 日志分析:查看 nginx 的日志,可能会有更多关于问题的详细信息。这可能有助于确定问题的确切原因。
  6. 更新 nginx 配置:确保您的 nginx 配置正确,并且与您的服务器和客户端兼容。例如,确保您的 ssl_certificatessl_certificate_key 指令指向正确的文件路径。
  7. 尝试不同的 SSL/TLS 套件:尝试更改 ssl_ciphers 指令以使用不同的加密套件。这可能会解决与客户端兼容性的问题。

以下是一种可能的解决方案,您可以尝试更新 nginx 和 openssl 的版本:

sudo apt-get update
sudo apt-get install nginx-full openssl

然后重新加载 nginx:

sudo systemctl reload nginx

如果问题仍然存在,您可能需要进一步检查您的网络配置、SSL 证书和 nginx 配置。

1 个回答
新手上路,请多包涵
  1. 可以尝试将ssl_protocols 限制为TLSv1.2
  2. 还可以尝试升级nginx版本,如果允许的话
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题