以下是Ubuntu下Nginx配置SSL的常见问题及解决方法:
-
证书路径错误
- 现象:Nginx启动失败,报错“无法找到证书文件”。
- 解决:检查
ssl_certificate和ssl_certificate_key指令中的路径是否正确,确保文件存在且Nginx有访问权限。
-
证书与域名不匹配
- 现象:浏览器提示“证书与网站域名不匹配”。
- 解决:确认证书是为当前域名申请的,若错误需重新申请或更正配置。
-
端口冲突
- 现象:Nginx无法启动或无法通过HTTPS访问。
- 解决:检查是否有其他服务占用443端口,使用
netstat -anp | grep 443排查,修改Nginx配置中listen 443为其他可用端口。
-
协议或加密套件不安全
- 现象:SSL测试工具(如SSL Labs)显示低分或存在不安全协议。
- 解决:禁用旧协议(如TLSv1、TLSv1.1),仅保留TLSv1.2/1.3,并使用安全加密套件(如
ECDHE-RSA-AES256-GCM-SHA384)。
-
混合内容警告
- 现象:HTTPS页面加载HTTP资源,浏览器显示不安全提示。
- 解决:确保页面中所有资源(如图片、脚本)均使用HTTPS协议加载。
-
缓存导致配置未生效
- 现象:修改配置后,浏览器仍显示旧状态。
- 解决:清除浏览器缓存,或使用无痕模式访问网站。
-
Let’s Encrypt证书续签问题
- 现象:证书过期后未自动续签,导致服务中断。
- 解决:安装Certbot并设置定时任务(如
0 2 * * * certbot renew --quiet),确保证书自动续签。
-
防火墙拦截
- 现象:HTTPS端口无法访问。
- 解决:检查Ubuntu防火墙(
ufw)是否允许443端口,命令:sudo ufw allow 443/tcp。