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无法加载, 会报无法找到证书文件的错误.

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

相关推荐
小林熬夜学编程1 小时前
【Linux系统编程】第二十弹---进程优先级 && 命令行参数 && 环境变量
linux·运维·服务器·c语言·开发语言·算法
Flying_Fish_roe2 小时前
linux-安全管理-文件系统安全
linux·运维·安全
哆啦叮当2 小时前
Linux下root用户共享conda环境给其他用户
linux·运维·服务器·python·conda
前行中的小猪3 小时前
如何让Windows控制台窗口不接受鼠标点击(禁用鼠标输入)
windows·控制台·cmd·禁止鼠标输入
andy7_3 小时前
运行在docker环境下的图片压缩小工具
运维·docker·容器
机器人迈克猫3 小时前
Django_Vue3_ElementUI_Release_004_使用nginx部署
nginx·elementui·django
耐心坚持努力�4 小时前
k8s重要知识点
linux·运维·k8s·k8s重要知识点
爱里承欢。4 小时前
【python - 数据】
开发语言·windows·python
幽月静语4 小时前
07 Shell Script条件测试表达式
运维
weixin_464838155 小时前
grep命令如何实现正则表达式搜索?
linux·运维·服务器·网络安全·系统架构