Windows 下用 OpenSSL 生成 SSL 密钥并配置 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

七、注意事项

  1. 自签名证书只适合内网测试,对外正式网站请使用正规 CA 签发的证书。
  2. 如果更换了 IP 地址,需要重新生成证书,CN 必须与实际访问地址一致。
  3. 私钥文件 server.key 不要外传。
  4. 如果 Windows 防火墙拦截了 443 端口,需要在防火墙中放行。
  5. 本教程未使用 SAN 扩展,因此证书只支持 CN 中填写的这一个 IP 地址。
相关推荐
2601_962364971 小时前
升级电脑人脸登录,选购 Windows Hello 模组常见误区
windows·安全·电脑
小陈不好吃1 小时前
Java 泛型与类型擦除:从 PECS 原则到 TypeToken 绕过
java·开发语言·windows·pecs 原则·typetoken绕过
Helix2503 小时前
WinPE 实战:从零制作纯净 Windows 安装与维护 U 盘
windows·安装·uefi·winpe·adk·u盘启动盘·dism
卜锦元3 小时前
Docker Compose 部署 Nginx 1.30.6 完整指南
nginx·docker·容器
桌管小李5 小时前
内网终端安全再升级|迪康端点安全 2609 版本四大新功能解读
大数据·windows·安全·macos·网络安全
情 九5 小时前
Dify 本地环境搭建教程:macOS / Windows
windows·macos
小小龙学IT5 小时前
Nginx 开源 Web 服务器与反向代理深度解
前端·nginx·开源
zxanz16 小时前
一张 SSL 证书,如何降低业务流量劫持与数据泄露风险
网络·网络协议·ssl
Escalating_xu7 小时前
【Linux 网络编程】Windows 客户端访问 Linux:用 Winsock 跑通 UDP 回显
linux·网络·windows