Nginx配置https证书遇到的一个问题

您所在的位置:网站首页 ssl证书自动续期是什么 Nginx配置https证书遇到的一个问题

Nginx配置https证书遇到的一个问题

2023-06-27 10:28| 来源: 网络整理| 查看: 265

前言

今天在给一个站点配置 HTTPS 证书的时候,遇到了一个问题,写此文章记录一下解决过程。

环境

Ubuntu 22.04 Nginx 1.18

过程

今天给一个站点申请了 HTTPS 证书,然后在 Nginx 中进行配置,Nginx 的 SSL 配置如下:

listen 443; ssl_certificate /etc/nginx/ssl/mysite.cer; ssl_certificate_key /etc/nginx/ssl/mysite.key;

配置完后,访问网站报错“ERR_SSL_PROTOCOL_ERROR”,如下图: 在这里插入图片描述 凡是通过https访问的请求,在 Nginx 的 access.log 中都出现了很多\x开头的乱码字符: 在这里插入图片描述 在 shell 环境中使用curl命令访问:curl 'https://www.mysite.com/',会报错:

curl: (35) error:0A00010B:SSL routines::wrong version number

一开始以为是证书有问题,检查了一番没有头绪,最后发现是 Nginx 的配置写错了:

listen 443 ssl; #listen [::]:443 ssl; ssl_certificate /etc/nginx/ssl/mysite.cer; ssl_certificate_key /etc/nginx/ssl/mysite.key;

第一行listen 443 ssl 的 ssl 漏写了,后果就是,Nginx 虽然监听了443端口,但是并没有在此端口上启用SSL模块,也就是说,工作模式是跟80端口一样的,所以浏览器发送过来的加密数据Nginx无法识别,最终导致在 access.log 中看到了乱码的数据。

其它

在旧版的 Nginx 中,开启SSL模块有一个专属指令,如下图所示: 在这里插入图片描述 但这个指令在新版的 Nginx 中已经被废弃。

细心的人可能还会发现有一行注释的配置:listen [::]:443 ssl 这句配置的意思是:在 ipv6 地址上监听443端口,而listen 443 ssl只在 ipv4 地址上监听,如果需要支持ipv6,可以将注释去掉。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3