以下是在Debian系统中排查Nginx SSL问题的步骤:
-
检查配置文件
- 确保
/etc/nginx/sites-available/下站点配置文件中ssl_certificate和ssl_certificate_key路径正确,且文件存在。 - 验证配置语法:
sudo nginx -t。
- 确保
-
验证证书有效性
- 检查证书有效期:
openssl x509 -in /path/to/cert.crt -noout -dates。 - 确保证书链完整,合并中间证书(若有):
cat cert.crt intermediate.crt > fullchain.crt,并更新配置。
- 检查证书有效期:
-
查看日志
- 通过
sudo tail -f /var/log/nginx/error.log查看SSL相关错误,如证书路径错误、协议不匹配等。
- 通过
-
测试SSL连接
- 命令行测试:
openssl s_client -connect example.com:443 -servername example.com,查看协议、加密套件及握手状态。 - 使用在线工具(如SSL Labs)检测证书配置和安全性。
- 命令行测试:
-
检查系统设置
- 确保防火墙(如UFW)允许443端口:
sudo ufw allow 443/tcp。 - 确认Nginx服务运行状态:
sudo systemctl status nginx,未运行则启动:sudo systemctl start nginx。
- 确保防火墙(如UFW)允许443端口:
-
处理权限与依赖
- 确保证书文件权限正确:
chmod 600 /etc/nginx/ssl/*.key,chmod 644 /etc/nginx/ssl/*.crt,且Nginx用户(如www-data)可读取。 - 安装必要依赖库(如OpenSSL):
sudo apt install openssl。
- 确保证书文件权限正确:
-
更新与优化
- 若使用Let’s Encrypt证书,确保自动续签配置正确:
sudo certbot renew --dry-run。 - 定期更新Nginx以获取SSL协议和安全性改进:
sudo apt update && sudo apt upgrade nginx。
- 若使用Let’s Encrypt证书,确保自动续签配置正确:
参考来源:[1,2,3,4,5,6,7,8,9,10,11]