在内部测试环境部署HTTPS需生成带SAN的自签名证书并配置Nginx:用OpenSSL生成含DNS/IP的证书,Nginx中指定证书路径、启用SSL监听443端口,可选配置HTTP跳转HTTPS,最后重载配置验证。

在内部测试环境部署 HTTPS,Nginx 配置自签名 SSL 证书其实很直接:先用 OpenSSL 生成一对可用的证书+私钥,再在 Nginx 的 server 块里指定路径并启用 SSL 监听。整个过程不依赖公网域名或第三方 CA,适合内网 IP、localhost 或 test.local 这类场景。
生成带 SAN 的自签名证书(推荐)
仅填 Common Name 容易在现代浏览器中报错(尤其访问 IP 地址时),所以必须包含 Subject Alternative Name(SAN)。执行以下命令(以 Linux 为例):
- 创建证书目录:sudo mkdir -p /etc/nginx/ssl
- 运行生成命令(替换 192.168.1.100 为你的实际内网 IP,也可加多个 DNS/IP):
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
-keyout /etc/nginx/ssl/nginx.key \
-out /etc/nginx/ssl/nginx.crt \
-subj "/CN=192.168.1.100" \
-addext "subjectAltName = DNS:localhost,IP:127.0.0.1,IP:192.168.1.100"
这样生成的证书同时匹配域名和 IP,避免 Chrome/Firefox 拒绝连接。
Nginx 配置 HTTPS server 块
编辑站点配置文件(如 /etc/nginx/conf.d/test.conf),写入:
- 监听 443 端口并启用 SSL:listen 443 ssl;
- 绑定具体地址(可选但建议):server_name 192.168.1.100;
- 指定证书与私钥路径:
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key; - 加上基础安全参数(兼容性与安全性兼顾):
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;
可选:HTTP 自动跳转 HTTPS
加一个独立的 80 端口 server 块,让所有 HTTP 请求重定向:
- server {
listen 80;
return 301 https://$host$request_uri;
}
注意:若测试时只用 HTTPS 访问,这步可省略。
验证与访问
配置完成后别忘了检查和重载:
- 语法检查:sudo nginx -t
- 重载配置:sudo systemctl reload nginx(或 sudo nginx -s reload)
- 访问 https://192.168.1.100,浏览器会提示不安全 —— 点「高级」→「继续前往」即可临时访问
- 命令行测试:curl -k https://192.168.1.100(-k 忽略证书校验)
如需彻底消除警告,可将 nginx.crt 导入操作系统或浏览器的受信任根证书存储区,但测试阶段通常无需这步。


















