温馨提示×

Ubuntu Nginx SSL配置常见问题

小樊
32
2025-11-03 01:46:18
栏目: 云计算

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

0