Nginx 提示此网站无法提供安全连接 ERR_SSL_PROTOCOL_ERROR,SSL_ERROR_RX_RECORD_TOO_LONG的问题

本文详细阐述了如何解决Nginx 1.20版本在配置HTTPS时遇到的ERR_SSL_PROTOCOL_ERROR问题,重点在于1.15.5以上版本配置更改和常见错误排查,包括旧版`sslon;`配置的移除及正确监听端口设置。

Nginx1.20 配置https,配置成功后,提示提示此网站无法提供安全连接。

谷歌浏览器提示:此网站无法提供安全连接 ERR_SSL_PROTOCOL_ERROR

查看文档后发现:

nginx 1.15.5及以上版本配置https时,不在需要  ssl on;配置节;

端口监听需要写成 listen 443 ssl;不能是旧版的 listen 443; 其他配置节不变。

不然就会报这个错误。

如果保留ssl on;配置节,则会提示 403 forbidden。

Nginx 中正确配置 SSL 证书链是避免浏览器报错 `ERR_SSL_PROTOCOL_ERROR` 的关键步骤之一。以下是配置过程中需要注意的关键点和操作建议。 ### 配置 SSL 证书链路径 在 Nginx 的配置文件中,需要确保 `ssl_certificate` 和 `ssl_certificate_key` 指向正确的证书和私钥文件路径。如果证书与私钥不匹配,将会导致 SSL 握手失败并出现 `ERR_SSL_PROTOCOL_ERROR` 错误。通常,SSL 证书链文件应包含服务器证书、中间证书以及根证书的完整信息。可以通过以下方式配置: ```nginx ssl_certificate /path/to/fullchain.pem; ssl_certificate_key /path/to/privkey.pem; ``` 其中,`fullchain.pem` 文件应包含完整的证书链信息,即服务器证书后紧跟中间证书,确保浏览器可以验证证书链的完整性[^3]。 ### 验证证书链完整性 证书链的完整性对于避免 SSL 握手失败至关重要。可以通过以下命令验证证书链是否正确: ```bash openssl s_client -showcerts -connect example.com:443 ``` 该命令将显示与服务器建立的 SSL/TLS 握手过程中所使用的证书链信息。请检查证书链是否完整,并且没有过期或被吊销的证书。此外,可以使用 [SSL Labs' SSL Test](https://www.ssllabs.com/ssltest/) 工具对目标域名进行详细检测,确保其 SSL/TLS 配置符合现代安全标准[^3]。 ### 配置加密协议和密码套件 为了确保 SSL/TLS 握手过程顺利进行,需要合理配置加密协议和密码套件。建议启用现代加密协议(如 TLSv1.2 和 TLSv1.3)并禁用不安全的旧协议。以下是一个推荐的配置示例: ```nginx ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5:!SHA1; ssl_prefer_server_ciphers on; ``` 此配置启用了安全的加密协议和密码套件,确保客户端和服务器之间的通信安全[^1]。 ### 检查 Nginx 版本兼容性 Nginx 在 1.15 版本之后对 SSL 配置语法进行了调整。旧版本中使用 `ssl on;` 的方式在新版本中不再支持。正确的配置方式应为: ```nginx server { listen 443 ssl; server_name example.com; ssl_certificate /path/to/fullchain.pem; ssl_certificate_key /path/to/privkey.pem; ssl_ciphers HIGH:!aNULL:!MD5:!SHA1; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; } ``` 如果仍然使用旧版本的配置方式,可能会导致 `ERR_SSL_PROTOCOL_ERROR` 错误。因此,确保配置文件中的语法与当前 Nginx 版本兼容非常重要。 ### 检查端口和防火墙设置 确保 Nginx 监听的端口(通常是 443)未被其他程序占用。同时,检查服务器的防火墙设置,确保端口 443 能够正常访问。如果配置中包含端口号,但在访问域名时未正确使用,也可能导致 SSL 解析不成功并出现 `ERR_SSL_PROTOCOL_ERROR` 错误[^4]。 ### 日志记录和调试 如果以上步骤都没有解决问题,可以开启 Nginx 的详细日志记录,并进行调试。在 Nginx 的配置文件中添加以下配置项: ```nginx error_log /var/log/nginx/error.log debug; ``` 这将启用详细的调试信息记录到错误日志文件中。根据日志中的输出,可以进一步分析和排查问题[^3]。 ---
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

倾斜的水瓶座

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

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

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

打赏作者

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

抵扣说明:

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

余额充值