Ubuntu Nginx SSL配置常见问题
Ubuntu Nginx SSL配置常见问题及解决方法
1. 证书文件路径或权限错误
证书文件(如fullchain.pem、.key)的路径配置错误是常见问题。需确保ssl_certificate(证书文件)和ssl_certificate_key(私钥文件)的路径指向正确位置(如Let’s Encrypt证书默认存放在/etc/letsencrypt/live/yourdomain.com/),且私钥文件权限严格限制为600(仅所有者可读)。可通过ls -l /path/to/cert.key检查权限,使用chmod 600 /path/to/cert.key修正。
2. Nginx配置语法错误
配置文件中的拼写错误(如ssl on;
误写为ssl=on;
)、缺少分号或括号会导致Nginx无法启动。使用nginx -t命令测试配置语法,若提示错误,会根据行号定位问题(如nginx: [emerg] invalid number of arguments in "ssl_certificate" directive表示证书路径错误),修正后重新加载配置(systemctl reload nginx)。
3. 端口冲突或防火墙拦截
443端口被其他服务占用(如Apache)或防火墙(如ufw)未开放443端口,会导致HTTPS无法访问。通过sudo netstat -tulnp | grep 443检查端口占用,若有冲突需停止对应服务;使用sudo ufw allow 443/tcp开放443端口,并确认ufw status显示为“active”。
4. 协议或加密套件配置过时
使用过时的SSL协议(如TLSv1、TLSv1.1)或弱加密套件(如RC4、DES)会降低安全性,甚至被浏览器标记为“不安全”。建议配置为ssl_protocols TLSv1.2 TLSv1.3;
(禁用旧协议),ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';
(使用强加密套件),并通过ssl_prefer_server_ciphers on;
优先使用服务器端加密套件。
5. HTTP未重定向到HTTPS
若未配置HTTP(80端口)到HTTPS(443端口)的重定向,用户仍可通过不安全的HTTP访问网站。需添加HTTP server块,使用return 301 https://$host$request_uri;
实现永久重定向(301跳转),例如:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 301 https://$host$request_uri;
}
```。
### **6. Let's Encrypt证书未自动续期**
Let's Encrypt证书有效期为90天,未设置自动续期会导致证书过期,网站无法访问。可通过`sudo certbot renew --dry-run`测试续订流程,若正常则在`crontab -e`中添加定时任务(每天凌晨检查):
```bash
0 0 * * * /usr/bin/certbot renew --quiet
续订后需重新加载Nginx(systemctl reload nginx)使新证书生效。
7. 浏览器显示证书不受信任
自签名证书或证书链不完整(缺少中间证书)会导致浏览器提示“证书不受信任”。需确保证书链完整:
- Let’s Encrypt证书需配置
fullchain.pem(包含中间证书)而非单独的cert.pem; - 商业证书需将中间证书(如
intermediate.crt)追加到服务器证书末尾(cat server.crt intermediate.crt > fullchain.crt),并在Nginx中指定ssl_certificate /path/to/fullchain.crt。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu Nginx SSL配置常见问题
本文地址: https://pptw.com/jishu/740508.html
