nginx手动生成自签名ssl证书只需一步:openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout nginx.key -out nginx.crt;再配置listen 443 ssl、ssl_certificate和ssl_certificate_key路径即可启用https,适用于开发测试环境。

在 Nginx 中手动生成自签名 SSL 证书,主要用于开发或测试环境,无需购买正式证书,但浏览器会提示“不安全”。整个过程只需 OpenSSL 命令,无需额外工具。
生成私钥和证书文件
执行以下命令,一步生成私钥(nginx.key)和自签名证书(nginx.crt):
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout nginx.key -out nginx.crt
运行后会提示填写国家、省份、组织名等信息,这些可随意填写(如 Country Name 输入 US,Common Name 可填 localhost 或测试域名如 test.local)。注意:Common Name 必须与你访问时用的域名一致,否则浏览器可能报错。
配置 Nginx 启用 HTTPS
编辑你的 Nginx 配置文件(如 /etc/nginx/sites-enabled/default),添加或修改 server 块:
- 监听 443 端口:
listen 443 ssl; - 指定证书路径:
ssl_certificate /path/to/nginx.crt; - 指定私钥路径:
ssl_certificate_key /path/to/nginx.key; - 建议加上:
ssl_protocols TLSv1.2 TLSv1.3;和ssl_prefer_server_ciphers off;以兼顾安全与兼容性
保存后运行 sudo nginx -t 检查语法,再 sudo systemctl reload nginx 重载配置。
解决浏览器证书警告
访问 https://your-domain 时,浏览器会显示不安全提示。可临时绕过:
- Chrome / Edge:点击地址栏左侧锁图标 → “详情” → “前往……(不安全)”
- Firefox:点击“高级” → “接受风险并继续”
若想让系统信任该证书,可将 nginx.crt 导入操作系统或浏览器的根证书存储区,但测试阶段通常不需要。
可选:生成带 SAN 的证书(支持多域名)
如果需用多个域名(如 localhost 和 127.0.0.1),默认方式不支持。可创建配置文件 ssl.conf:
subjectAltName = DNS:localhost,IP:127.0.0.1
然后运行:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout nginx.key -out nginx.crt -config ssl.conf -extensions req_ext
这样生成的证书就能同时匹配域名和 IP,避免部分浏览器报错。











