可直接用 openssl 生成自签名证书并在 nginx 启用 https,适用于内网开发或测试;需创建证书目录、执行 openssl 命令生成含 san 的证书和私钥,配置 nginx 监听 443 端口并指定证书路径,添加安全参数,可选 http 跳转,客户端需手动信任或忽略校验,最后重载 nginx 并验证监听与访问。

可以直接用 OpenSSL 生成自签名证书,再在 Nginx 中启用 HTTPS,无需第三方 CA,适合内网开发或测试环境快速验证 HTTPS 行为。
生成自签名 SSL 证书和私钥
在服务器上执行以下命令,生成有效期为 365 天的证书(可按需调整):
- 创建存放证书的目录:mkdir -p /etc/nginx/ssl
- 生成私钥和证书(一步完成,含 SAN 支持,避免浏览器提示域名不匹配):
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)
配置 Nginx 启用 HTTPS
编辑站点配置文件(如 /etc/nginx/conf.d/test.conf),添加或修改 server 块:
- 监听 443 端口并启用 SSL:
listen 443 ssl; - 指定证书路径:
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; - 可选:自动跳转 HTTP 到 HTTPS(加一个 80 端口 server 块):
server {
listen 80;
return 301 https://$host$request_uri;
}
验证与信任(客户端侧)
自签名证书不会被系统默认信任,访问时浏览器会显示警告。常见处理方式:
- Chrome / Edge:点击「高级」→「继续前往…(不安全)」即可临时访问(仅测试用)
- curl 测试:加 -k 参数忽略证书校验,例如:
curl -k https://localhost - macOS / Windows 可将 nginx.crt 手动导入系统钥匙串或受信任的根证书存储(需设为“始终信任”),之后浏览器不再告警
重启 Nginx 并确认生效
保存配置后执行:
- 检查语法:nginx -t
- 重载配置:systemctl reload nginx(或 nginx -s reload)
- 用 ss -tnlp | grep :443 确认 Nginx 正在监听 443
- 浏览器访问 https://localhost 或对应内网地址,看到响应即成功











