文章目录
- [Windows 下用 OpenSSL 生成 SSL 密钥并配置 Nginx 教程](#Windows 下用 OpenSSL 生成 SSL 密钥并配置 Nginx 教程)
-
- 一、准备工作
-
- [1. 确认 OpenSSL](#1. 确认 OpenSSL)
- [2. 确认 Nginx 路径](#2. 确认 Nginx 路径)
- [3. 确定访问地址](#3. 确定访问地址)
- 二、生成私钥和自签名证书
- [三、配置 Nginx](#三、配置 Nginx)
- [四、测试并启动 Nginx](#四、测试并启动 Nginx)
- 五、浏览器访问
- 六、常用维护命令
- 七、注意事项
Windows 下用 OpenSSL 生成 SSL 密钥并配置 Nginx 教程
一、准备工作
1. 确认 OpenSSL
打开 Git Bash,执行:
bash
openssl version
能正常输出版本号即可。
2. 确认 Nginx 路径
假设你的 Nginx 解压在 C:\nginx,后续命令和配置都以此为例,请根据实际路径替换。
3. 确定访问地址
假设你的内网 IP 是 192.168.1.100,请替换成你自己的实际 IP。
二、生成私钥和自签名证书
创建进入文件夹
bash
mkdir -p /c/nginx/conf
cd /c/nginx
在 Git Bash 中执行,一条命令搞定:
bash
MSYS_NO_PATHCONV=1 openssl req -x509 -newkey rsa:2048 -nodes \
-keyout server.key \
-out server.crt \
-days 365 -sha256 \
-subj "/C=CN/ST=Fujian/L=Fuzhou/O=Test/CN=192.168.1.100"
说明:
| 参数 | 含义 |
|---|---|
MSYS_NO_PATHCONV=1 |
禁用路径转换 |
-x509 |
直接生成自签名证书,跳过 CSR |
-newkey rsa:2048 |
生成 2048 位 RSA 私钥 |
-nodes |
私钥不加密码,Nginx 重启时不需要输入密码 |
-keyout |
私钥输出路径 |
-out |
证书输出路径 |
-days 365 |
有效期 365 天 |
-subj |
证书主题信息,CN 填你的内网 IP |
注意 :Git Bash 中 Windows 路径用
/c/开头,C:\nginx对应/c/nginx。
执行完成后,在C:\nginx\conf\目录下会生成两个文件:
server.key--- 私钥server.crt--- 证书
三、配置 Nginx
编辑 C:\nginx\conf\nginx.conf,在 http 块中添加或修改一个 server:
nginx
server {
listen 443 ssl;
server_name 192.168.1.100;
ssl_certificate conf/server.crt;
ssl_certificate_key conf/server.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
root html;
index index.html index.htm;
}
}
几点说明:
- Nginx for Windows 中路径用正斜杠
/,conf/server.crt是相对于nginx.exe所在目录的路径。 server_name填你的内网 IP。- 如果已有 80 端口的 server 块,保留即可,HTTPS 和 HTTP 可以共存。
四、测试并启动 Nginx
在 Git Bash 或 CMD 中,进入 Nginx 目录:
bash
cd /c/nginx
测试配置是否正确:
bash
./nginx.exe -t
输出 syntax is ok 和 test is successful 表示配置没问题。
启动 Nginx:
bash
./nginx.exe
如果 Nginx 已经在运行,重新加载配置:
bash
./nginx.exe -s reload
五、浏览器访问
用浏览器打开:
https://192.168.1.100
由于是自签名证书,浏览器会提示"连接不安全"或"您的连接不是私密连接"。点击 高级 → 继续访问 即可。
六、常用维护命令
| 操作 | 命令 |
|---|---|
| 启动 Nginx | ./nginx.exe |
| 重新加载配置 | ./nginx.exe -s reload |
| 停止 Nginx | ./nginx.exe -s stop |
| 查看证书信息 | openssl x509 -in conf/server.crt -text -noout |
| 验证私钥是否匹配 | `openssl x509 -noout -modulus -in conf/server.crt |
七、注意事项
- 自签名证书只适合内网测试,对外正式网站请使用正规 CA 签发的证书。
- 如果更换了 IP 地址,需要重新生成证书,CN 必须与实际访问地址一致。
- 私钥文件
server.key不要外传。 - 如果 Windows 防火墙拦截了 443 端口,需要在防火墙中放行。
- 本教程未使用 SAN 扩展,因此证书只支持 CN 中填写的这一个 IP 地址。