一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Nginx 中 HTTPS 配置如何在测试环境中配置临时自签名证书跳过验证

时间:2026-08-24 11:54:48 编辑:袖梨 来源:一聚教程网

核心思路是生成含SAN的自签名证书并正确配置Nginx,再通过客户端手动信任或忽略校验;必须显式声明DNS和IP等SAN条目,否则浏览器报NET::ERR_CERT_COMMON_NAME_INVALID。

在测试环境用 Nginx 配 HTTPS,临时跳过证书验证的核心思路是:自己生成带 SAN 的自签名证书 + Nginx 正确加载 + 客户端主动忽略或信任。重点不是“跳过服务端验证”,而是让浏览器、curl 或前端请求不因证书问题中断连接。

生成带 SAN 的自签名证书

现代浏览器(Chrome/Firefox/Safari)和 curl 会强制校验 Subject Alternative Name(SAN),只写 CN=localhost 不够,必须显式列出所有访问方式(域名、IP)。

  1. 创建证书目录:sudo mkdir -p /etc/nginx/ssl
  2. 执行命令(OpenSSL 3.0+):

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

    -keyout /etc/nginx/ssl/nginx.key

    -out /etc/nginx/ssl/nginx.crt

    -subj "/CN=localhost"

    -addext "subjectAltName = DNS:localhost,IP:127.0.0.1,IP:192.168.1.100"

    (把 192.168.1.100 换成你服务器实际内网 IP)

  3. 设权限:sudo chmod 600 /etc/nginx/ssl/nginx.keysudo chmod 644 /etc/nginx/ssl/nginx.crt

Nginx 配置 HTTPS server 块

只需一个标准 443 server 块,路径、协议、加密套件三处不能错。

  1. 监听并启用 SSL:listen 443 ssl;
  2. 指定证书路径:ssl_certificate /etc/nginx/ssl/nginx.crt;

    ssl_certificate_key /etc/nginx/ssl/nginx.key;

  3. 禁用老旧协议:ssl_protocols TLSv1.2 TLSv1.3;
  4. 基础加密套件(兼容性好):ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
  5. 可选 HTTP 自动跳转:

    server { listen 80; return 301 https://$host$request_uri; }

客户端侧临时跳过验证的方法

自签名证书本身不被系统信任,需按需处理,无需全局部署根证书。

  1. Chrome / Edge:访问时点「高级」→「继续前往(不安全)」,仅限单次调试
  2. curl 测试:加 -k 参数,如 curl -k https://localhost
  3. macOS:双击 .crt 文件 → 导入钥匙串 → 右键证书 →「显示简介」→「信任」→ 设为「始终信任」
  4. 前端 JavaScript 请求:无法绕过浏览器证书校验,只能靠上述手动信任或改用 http:// 调试接口

验证是否生效

配置完成后别忘了检查和重载:

  1. 检查语法:nginx -t
  2. 重载配置:sudo systemctl reload nginxsudo nginx -s reload
  3. 确认监听:ss -tlnp | grep :443
  4. 本地访问:curl -k https://localhost 应返回响应,无证书报错

热门栏目