Windows技术栈企业基础底座(1)-为基于Windows的Nginx安装证书

企业的基础环境是一个组织的信息化数字化底座。传统企业基础环境多种系统,应用交杂,多种技术栈使得深入运维成本极大,且人员知识技能较难复用,造成资源浪费。本系列旨在尝试推动这一理念, 建立Windows, 或linux聚焦的技术栈的企业数字环境, 统一技术栈, 简化技术选型提高知识密度与资源复用率, 同时支持中小企业的技术快速落地和大型企业的大规模高并发以及精细化。为广大技术决策提供参考。

本篇是本系列文章第一篇讲Windows下Nginx配置. Nginx是linux里常用服务. 随着Windows拥抱Linux以及WSL(Windows)的普及, 也有些场景是需要异构环境。网上讨论Windows下Nginx使用的信息很少, 笔者将这些信息整理方便需要的读者参考.

注: Nginx在Windows系统下的版本‌主要提供了基本的HTTP服务器和反向代理功能,尽管它处于beta阶段,并且与Unix版本相比缺少了一些功能,如XSLT过滤器、图像过滤器、GeoIP模块和嵌入Perl语言支持。然而,对于大多数基本的Web服务和反向代理需求,Windows版的Nginx能够满足

环境介绍:

企业Windows客户端通过Nginx通过HTTPS访问内部网页应用. 客户端是Windows 10, 使用Windows CA作为内部PKA, 用Windows版Nginx. 本文主要讲Nginx安装配置部分:

1. 在Windows安装Nginx:

从官方网站下载Nginx Windows版本进行安装. :

nginx: download

可以选择最新版本, 下载后解压就可以.

2. 安装Windows CA, 并生成带有私钥的证书用于web应用:

采用Windows 2016作为内部CA证书服务器. 证书服务器的配置安装我们将在其他文章里详细展开. 这里假设你已经生成了1.pfx的证书文件.

3. 在安装Nginx的Windows服务器安装Openssl:

Nginx默认不支持pfx/cer格式证书. 需要将pfx转key, crt和pem进行配置使用

下载openssl Windows安装文件:

Win64 OpenSSL v3.3.2 Light :

安装后选择将openssl.exe 复制到 bin文件夹。

同时把第二步生成的1.pfx 复制到 openssl的 bin文件夹下,方便后续操作.

4. 进Openssl转证书:

a. 以管理员身份运行cmd.exe, 进入到openssl.exe和证书所在目录 bin

b. 运行一下命令开始转证书:

根据pfx生成key文件

复制代码
openssl pkcs12 -in 1.pfx -out server.key -nocerts

根据提示输入三次口令 -- 这里第一次为pfx文件密码, 2/3为pem密码

根据pfx生成crt证书文件

复制代码
openssl pkcs12 -in 1.pfx -out server.crt

根据提示输入三次口令 -- 这里第一次为pfx文件密码, 2/3为pem密码

生成pem文件

复制代码
openssl x509 -in server.crt -outform PEM -out server.pem

这里防止nginx每次启动都需要输入pem密码, 多做一步:

复制代码
openssl rsa -in server.key -out server.key.unsecure

注意: server.key.unsecure 使得私钥没有密码保护.

  1. 配置Nginx 使用生成的证书:

进到Nginx安装目录的conf文件夹, 按如下编辑nginx.conf文件. 将servername, proxy_pass 地址改为实际值.

如果nginx到后端无需SSL, 可以配置proxy_pass 为http

这里建议将nginx所需要的证书复制到conf文件夹, 简化配置证书路径. nginx是linux环境下构建的应用, 其路径表达和Windows 不同。

复制代码
# HTTPS server    # 将servername修改为自己的域名server {listen       443 ssl;        server_name  servername;        ssl_certificate      "c:\Nginx\conf\server.pem";        ssl_certificate_key  "c:\Nginx\conf\server.key.unsecure";ssl_session_cache    shared:SSL:1m;ssl_session_timeout  5m;ssl_ciphers  HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers  on;location / {            proxy_pass http://ipaddress:port;        }    }
  1. 启动Nginx, 检测 https连接是否成功.

这里需要注意的是, 内部WindowsCA的 根证书,需要出现在客户端机器的受信任证书颁发机构, 不然服务器证书也将不被信任从而浏览器访问会出现证书错误.

正常情况下, https访问就会成功. 如果之前nginx.conf的证书路径配置错误, 则nginx无法加载, 会报无法找到证书文件的错误.

关注生产力联盟, 提高个人和组织的新质生产力. 欢迎关注交流.

相关推荐
孙克旭_6 小时前
PXE_Kickstart_无人值守自动化安装系统
linux·运维·自动化
π大星星️8 小时前
HAProxy + Keepalived + Nginx 高可用负载均衡系统
运维·nginx·负载均衡
IT专业服务商9 小时前
联想 SR550 服务器,配置 RAID 5教程!
运维·服务器·windows·microsoft·硬件架构
海尔辛9 小时前
学习黑客5 分钟小白弄懂Windows Desktop GUI
windows·学习
gushansanren9 小时前
基于WSL用MSVC编译ffmpeg7.1
windows·ffmpeg
伐尘10 小时前
【Qt】编译 Qt 5.15.x For Windows 基础教程 Visual Studio 2019 MSVC142 x64
windows·qt·visual studio
Johny_Zhao10 小时前
K8S+nginx+MYSQL+TOMCAT高可用架构企业自建网站
linux·网络·mysql·nginx·网络安全·信息安全·tomcat·云计算·shell·yum源·系统运维·itsm
专注代码七年10 小时前
在Windows 境下,将Redis和Nginx注册为服务。
windows·redis·nginx
UpUpUp……12 小时前
Linux--JsonCpp
linux·运维·服务器·c++·笔记·json
xixingzhe212 小时前
Nginx 配置多个监听端口
服务器·前端·nginx