Nginx的错误日志是排查SSL配置问题的核心依据,Ubuntu系统下日志默认路径为/var/log/nginx/error.log。使用以下命令实时查看最新错误信息:
sudo tail -f /var/log/nginx/error.log
根据日志中的具体报错(如证书路径错误、加密套件不匹配、模块缺失等),可快速定位问题根源。
在修改配置文件后(如/etc/nginx/sites-available/your_domain.conf),务必使用以下命令检查语法是否正确:
sudo nginx -t
若输出configuration file syntax is ok且test is successful,说明配置文件无语法错误;若报错(如unknown directive "ssl_certificate"),需根据提示修正配置文件中的拼写或格式问题。
ssl_certificate(服务器证书)和ssl_certificate_key(私钥)指令指向的文件路径正确,且文件存在。例如:ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
若证书由中间CA签发,需添加ssl_trusted_certificate指令指定中间证书路径(合并根证书与中间证书)。600(仅所有者可读写),避免Nginx进程无法访问:sudo chmod 600 /etc/nginx/ssl/*.key
sudo chown root:root /etc/nginx/ssl/*.crt /etc/nginx/ssl/*.key
若Nginx启动时报错SSL modules require the OpenSSL library或no ssl module,说明未启用SSL模块。需重新编译Nginx并添加--with-http_ssl_module参数:
# 查看Nginx已安装模块(确认是否包含ngx_http_ssl_module)
nginx -V 2>&1 | grep -o with-http_ssl_module
# 若未包含,进入Nginx源码目录重新编译
cd /path/to/nginx-source
./configure --prefix=/usr/share/nginx --with-http_ssl_module --with-http_stub_status_module
make
sudo make install
编译前需安装OpenSSL依赖:sudo apt-get install openssl libssl-dev。
Ubuntu系统下,若配置ssl_ciphers PROFILE=SYSTEM会报错no cipher match(因Ubuntu未使用Redhat的PROFILE系统)。需修改为明确的加密套件,例如:
ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
ssl_prefer_server_ciphers on;
同时确保启用了安全的TLS协议(如TLSv1.2及以上):
ssl_protocols TLSv1.2 TLSv1.3;
旧版本的Nginx或OpenSSL可能存在SSL/TLS协议兼容性问题(如不支持TLSv1.3),导致握手失败。使用以下命令更新系统软件包:
sudo apt update
sudo apt upgrade nginx openssl
更新后重启Nginx服务:sudo systemctl restart nginx。
若浏览器无法访问HTTPS端口(443),需确认Ubuntu防火墙(ufw)是否允许该端口:
sudo ufw allow 'Nginx Full' # 允许HTTP(80)和HTTPS(443)
sudo ufw enable # 启用防火墙
sudo ufw status # 查看防火墙状态
若使用iptables,需添加规则:sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT。