ubuntu

ubuntu nginx ssl常见问题

小樊
42
2025-11-07 06:18:52
栏目: 云计算

1. 443端口未启用SSL模块
现象:配置中仅使用listen 443;而遗漏ssl参数,导致Nginx虽监听443端口但未启用SSL加密,访问时出现“ERR_SSL_PROTOCOL_ERROR”或curl报错“wrong version number”。
解决方法:修改Nginx配置,确保443端口监听指令包含ssl参数,例如:listen 443 ssl;(IPv4);如需支持IPv6,添加listen [::]:443 ssl;

2. SSL模块未安装
现象:重载Nginx时报错“the ‘ssl’ parameter requires ngx_http_ssl_module”,表明当前Nginx未编译SSL模块,无法处理HTTPS请求。
解决方法:重新编译Nginx并添加SSL模块。步骤:下载Nginx源码→配置时加入--with-http_ssl_module→编译安装(如./configure --prefix=/usr/local/nginx --with-http_ssl_module && make && make install);或通过包管理器安装带SSL模块的Nginx版本(如sudo apt install nginx-extras)。

3. 证书文件路径或权限错误
现象:重载Nginx时报错“cannot load certificate”(如/etc/nginx/ssl/domain.pem not found)或“permission denied”,导致HTTPS无法启动。
解决方法

4. 证书链不完整
现象:浏览器访问时提示“证书不受信任”或“证书链不完整”,主要因未包含中间证书(如CA颁发的中间证书)。
解决方法:将中间证书与服务器证书合并为完整证书链,例如:cat server.crt intermediate.crt > fullchain.pem,然后在Nginx配置中指定ssl_certificate /path/to/fullchain.pem

5. 协议或加密套件配置不当
现象:部分浏览器(如旧版IE)提示“证书不符合标准”或“连接不安全”,因使用了不安全的TLS版本(如TLSv1.0/1.1)或弱加密套件(如MD5、DES)。
解决方法:优化Nginx配置,仅启用安全的TLS版本和加密套件:

ssl_protocols TLSv1.2 TLSv1.3;  # 禁用TLSv1.0/1.1
ssl_ciphers HIGH:!aNULL:!MD5:!RC4:!DES;  # 排除弱加密套件
ssl_prefer_server_ciphers on;  # 优先使用服务器端加密套件

配置后执行nginx -t测试语法,再重载Nginx。

6. 端口被占用
现象:重载Nginx时报错“bind() to 0.0.0.0:443 failed (98: Address already in use)”,表示443端口已被其他进程占用(如Apache、另一个Nginx实例)。
解决方法

7. Let’s Encrypt证书自动续期问题
现象:证书到期后未自动续期,导致HTTPS连接失败(如浏览器提示“证书已过期”)。
解决方法

8. 强制HTTP跳转HTTPS配置错误
现象:HTTP请求未被重定向到HTTPS,导致用户仍通过不安全协议访问,或重定向循环(如反复在HTTP/HTTPS间跳转)。
解决方法:添加独立的HTTP server块,配置301永久重定向到HTTPS,例如:

server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    return 301 https://$host$request_uri;  # 强制跳转HTTPS
}

确保HTTPS server块的server_name与HTTP块一致,避免重定向循环。

0
看了该问题的人还看了