温馨提示×

debian nginxssl为何报不安全

小樊
41
2026-10-05 15:34:17
栏目: 云计算

在 Debian 上用 Nginx 配置 SSL 后浏览器仍提示“不安全”,通常不是 Nginx 本身的问题,而是证书或配置不正确。常见原因和排查方法如下:


一、最常见原因

1️⃣ 使用的是自签名证书(Self-Signed)

如果是自己用 openssl 生成的证书:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 ...

浏览器一定会提示不安全,因为这是“不受信任的 CA”。

✅ 解决:

  • 用于生产:使用 Let’s Encrypt(免费)
apt install certbot python3-certbot-nginx
certbot --nginx -d example.com
  • 内部测试:手动把证书导入系统/浏览器信任

2️⃣ 证书域名不匹配

比如:

  • 证书是 example.com
  • 你访问的是 www.example.com 或 IP

浏览器会认为证书无效。

✅ 检查:

openssl x509 -in fullchain.pem -noout -text | grep DNS

3️⃣ 证书链不完整(缺 intermediate)

只配置了 cert.pem,没配 fullchain.pem

❌ 错误示例:

ssl_certificate /etc/ssl/cert.pem;

✅ 正确:

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

4️⃣ HTTP 访问未强制跳转 HTTPS

如果还能用 http:// 访问,浏览器可能显示“部分不安全”。

✅ Nginx 配置:

server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

5️⃣ 混合内容(Mixed Content)

页面里有:

<img src="http://...">
<script src="http://...">

浏览器会标记“连接不安全”。

✅ 解决:

  • 全部改成 https://
  • 或加:
add_header Content-Security-Policy "upgrade-insecure-requests";

二、Nginx SSL 基础正确配置示例

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
}

三、快速自查清单 ✅

  • [ ] 使用的是受信任证书(Let’s Encrypt / 商业 CA)
  • [ ] 域名与证书一致
  • [ ] 使用 fullchain.pem
  • [ ] 已强制 HTTPS
  • [ ] 页面无 HTTP 资源
  • [ ] 系统时间正确(时间错会导致证书失效)

如果你愿意,可以把:

  • 浏览器报错截图
  • nginx -T 配置
  • 证书类型(Let’s Encrypt / 自签)

发出来,我可以帮你精确定位问题。

0 踩