发布日期
· 阅读约 3 分钟

HTTPS 配完仍不安全:Nginx 证书链路怎么验收

listen 443 和证书路径都写了,浏览器仍报「不安全」或证书错误——多半不是「再重装一次 Nginx」,而是证书链、域名不匹配、没跳转、或页内混用 HTTP 资源。按下面清单验收。

配置细节笔记见 Nginx 排障索引 · HTTPS

你遇到的问题

现象更可能是
NET::ERR_CERT_COMMON_NAME_INVALID证书域名与访问域名不一致
证书不受信任缺中间证书 / 自签未导入信任
地址栏仍是 http://未做 80→443 跳转或跳转失败
锁图标带警告混合内容(HTTPS 页加载 HTTP 图片/脚本)

2 分钟诊断

# 看握手与证书主体
curl -vI https://你的域名/ 2>&1 | head -80

# 确认 Nginx 已编入 ssl 模块
nginx -V 2>&1 | tr ' ' '\n' | grep ssl

核对:ssl_certificate / ssl_certificate_key 路径、文件权限、server_name 是否覆盖你访问的 Host。

解法

1. 最小 HTTPS server

server {
  listen 443 ssl;
  server_name example.com;

  ssl_certificate     /path/to/fullchain.pem;  # 含中间证书
  ssl_certificate_key /path/to/privkey.pem;
}

自签仅用于内测;对外用 Let’s Encrypt 或云厂商证书,并使用 fullchain

2. HTTP 跳转 HTTPS

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

3. 混合内容

页面、API、资源 URL 一律 https;检查 HTML 里硬编码的 http://

4. 改完必做

nginx -t && nginx -s reload

如何验证

  • 浏览器无证书警告(或内测自签已手动信任)
  • curl -I http://域名 返回 301 到 https
  • 控制台无 mixed content
  • 证书 SAN/CN 覆盖实际访问域名(含 www)

下一步

  1. 生产环境打开较稳妥的协议与套件(按当前 Nginx/OpenSSL 文档)。
  2. 静态与网关性能回到 静态资源排查
  3. 完整模块笔记仍在索引长文中检索。

相关文章

浏览全部 →