常见问题解决 --- PFX 文件转换为 Nginx 可用的证书文件
以下是适用于 Windows 系统的详细步骤,将 PFX 文件转换为 Nginx 可用的证书文件并配置 Nginx:
步骤 1:安装 OpenSSL
1. 下载 OpenSSL for Windows:
前往 [OpenSSL 官方下载页](https://slproweb.com/products/Win32OpenSSL.html),选择适合你系统的版本(推荐下载 `Win64 OpenSSL` 最新版)。
安装时勾选 Add OpenSSL to the system PATH,以便在命令行中使用。
2. 验证安装:
打开命令提示符(CMD 或 PowerShell),输入:
openssl version
如果显示版本号(如 `OpenSSL 3.0.8`),说明安装成功。
3. 备份 PFX 文件:将 PFX 文件和密钥复制到安全目录(如 `C:\certs`)。
步骤 2:提取证书和私钥
1. 打开命令提示符:
进入 PFX 文件所在目录(例如 `C:\certs`):
cd C:\certs
2. 提取证书文件(`.crt`):
openssl pkcs12 in your_cert.pfx clcerts nokeys out cert.crt
输入 PFX 文件的密码(如果有)。
生成 `cert.crt`(包含主证书)。
3. 提取私钥文件(`.key`):
openssl pkcs12 in your_cert.pfx nocerts out key.pem nodes
输入 PFX 文件的密码。
生成 `key.pem`(未加密的私钥)。
4. (可选)提取中间证书链:
openssl pkcs12 in your_cert.pfx cacerts nokeys out chain.crt
步骤 3:合并证书链(如果需要)
如果存在中间证书链(`chain.crt`),需将它与主证书合并:
1. 使用文本编辑器(如 Notepad++):
打开 `cert.crt` 和 `chain.crt`。
将 `chain.crt` 的内容复制到 `cert.crt` 的末尾,保存为 `fullchain.crt`。
2. 或使用命令行合并(Windows 无 `cat` 命令):
copy /b cert.crt + chain.crt fullchain.crt
步骤 4:配置 Nginx
1. 准备证书文件:
将生成的 `fullchain.crt` 和 `key.pem` 复制到 Nginx 的 `conf` 目录(如 `C:\nginx\conf\ssl`)。
2. 编辑 Nginx 配置文件:
打开 Nginx 的配置文件(如 `C:\nginx\conf\nginx.conf`)或虚拟主机文件。
在 `server` 块中添加 SSL 配置:
nginx
server {
listen 443 ssl;
server_name your_domain.com;
ssl_certificate conf/ssl/fullchain.crt; # 证书路径
ssl_certificate_key conf/ssl/key.pem; # 私钥路径
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHEECDSAAES128GCMSHA256:ECDHERSAAES128GCMSHA256;
# 其他配置...
}
3. 保存配置文件:确保文件编码为 UTF8 无 BOM(使用 Notepad++ 或 VS Code)。
步骤 5:设置文件权限
1. 保护私钥文件:
右键点击 `key.pem` → 属性 → 安全 → 仅允许管理员和 SYSTEM 账户访问。
步骤 6:重启 Nginx
1. 验证配置:
cd C:\nginx
nginx t
如果显示 `successful`,说明配置正确。
2. 重启 Nginx:
nginx s stop # 停止
nginx # 启动
步骤 7:验证 HTTPS 访问
1. 访问 `https://your_domain.com`,确认浏览器显示安全锁图标。
2. 使用 [SSL Labs 测试工具](https://www.ssllabs.com/ssltest/) 检查证书链是否完整。
常见问题
1. 错误 `SSL: error:0B080074`
原因:证书与私钥不匹配。
解决:重新提取证书和私钥,确保使用同一 PFX 文件。
2. 浏览器提示“证书链不完整”
原因:未合并中间证书。
解决:确保 `fullchain.crt` 包含主证书和中间证书。
3. Nginx 无法启动
检查证书路径是否正确(使用绝对路径或相对于 `nginx.conf` 的路径)。
确保私钥文件权限未被其他程序占用。
总结
Windows 下操作与 Linux 类似,主要区别在于:
OpenSSL 需要手动安装并配置环境变量。
合并证书链需使用 `copy /b` 或手动编辑文件。
文件路径使用反斜杠 `\`,但在 Nginx 配置中建议用正斜杠 `/`(如 `conf/ssl/fullchain.crt`)。
常见问题解决 --- PFX 文件转换为 Nginx 可用的证书文件的更多相关文章
- PyQt5UI文件转换为对应版本的py文件
PyQt5 UI文件转换为对应版本的py文件 #coding=utf-8 ''' PyQt5 UI文件转换为对应版本的py文件 python -m PyQt5.uic.pyuic untitled.u ...
- 使用vault pki 为nginx 生成tls 证书文件
关于vault pki 管理的使用的可以参考官方文档或者docker-vault 以下演示一个简单的基于vault pki 为nginx 提供tls 证书 项目环境配置 nginx 配置文件 wo ...
- DWG2SHP DXF2SHP 如何把AutoCAD的DWG,DXF文件转换为Esri ArcGIS的Shape文件
dwg是AutoCAD创立的一种图纸保存格式,已经成为二维CAD的标准格式,很多其他CAD为了兼容AutoCAD,也直接使用dwg作为默认工作文件. 地图shape文件由ESRI开发,一个ESRI的s ...
- PHP上传图片时,如何判断上传的文件是否为可用的图片文件
利用getimagesize函数: function isImage($filename){$types = '.gif|.jpeg|.png|.bmp';//定义检查的图片类型if(file_exi ...
- 数字证书文件cer和pfx的区别
作为文件形式存在的证书一般有这几种格式: 1.带有私钥的证书 由Public Key Cryptography Standards #12,PKCS#12标准定义,包含了公钥和私钥的二进制格式的证书形 ...
- xBIM 基础06 将STEP物理文件转换为XML
系列目录 [已更新最新开发文章,点击查看详细] 一.STEP标准简介 STEP,它是Standard for the Exchange of Product model data的缩写.产品数 ...
- 通过OpenSSL解码X509证书文件
在Windows平台下.假设要解析一个X509证书文件,最直接的办法是使用微软的CryptoAPI. 可是在非Windows平台下,就仅仅能使用强大的开源跨平台库OpenSSL了.一个X509证书通过 ...
- 如何将SolidWorks文件另存为.obj文件及如何打开.obj格式文件
原网站:http://fans.solidworks.com.cn/forum.php?mod=viewthread&tid=40238) OBJ文件是Alias Wavefront公司为它的 ...
- [python][nginx][https] Nginx 服务器 SSL 证书安装部署
目录 前言 1 申请证书 2 Nginx 服务器 SSL 证书安装部署 2.1.准备 Nginx 环境 2.2 证书部署 2.3 Nginx 配置 3 最后 参考链接 前言 博主博客中的图片,使用的是 ...
- VC++6.0一些常见问题解决方法(打开多个窗口、行号、添加文件无响应、更改.exe图标及名称等等)
背景: 最近使用VC++6.0做一个界面,供测试CAN通信使用.由于客户希望我们提供简单方便的函数接口让其最快速使用CAN,DLL(动态链接库)是不二之选.做DLL需要两个VC窗口进行测试才方便.可是 ...
随机推荐
- SQL的SELECT执行顺序
SELECT执行顺序 你需要记住 SELECT 查询时的两个顺序: 1. 关键字的顺序是不能颠倒的: SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ...
- MySQL 23 MySQL是怎么保证数据不丢的?
只要redo log和binlog保证持久化到磁盘,就能确保MySQL异常重启后,数据可以恢复.本文讲讲MySQL写入binlog和redo log的流程. binlog的写入机制 binlog的写入 ...
- CF742B Arpa’s obvious problem and Mehrdad’s terrible solution (数论)
codeforces链接:https://codeforces.com/problemset/problem/742/B CF742B Arpa's obvious problem and Mehrd ...
- Oracle应用之批量递增更新数据脚本
需求:更新用户表的工号,格式为"GD1,GD2,..."的格式,如果有数据取最大值再递增 E1:先查询出是否有数据,有数据取最大值再递增,使用nvl函数 /* 查询max值*/ s ...
- python中偏函数partial的使用
python内置给我们一个偏函数,可以把函数包裹一下提前传参 函数在执行时,要带上所有必要的参数进行调用,但是,有时参数可以在函数被调用之前提前知道,这种情况下,一个函数有一个或者多个参数预先就能用上 ...
- CUDA编程初探
1 简介 1.1 发展历程 1. 起步阶段(1990 年代):从图形加速到 GPU 雏形 1993年:NVIDIA 成立,初期专注于图形芯片设计.1997年:发布 RIVA 128,首款支持 Dire ...
- [题解]HDU1024 Max Sum Plus Plus
前言 最近困惑于线性\(dp\)的定义--只有状态表示为一维的才叫线性\(dp\)吗? 通过CSDN上的这篇文章,我得到了答案: 所谓线性\(dp\),就是递推方程是有一个明显的线性关系的,一维线性和 ...
- Angular入门一篇就够了(项目搭建、自定义组件、指令、逻辑等)
第一步.安装Angular/CLI npm install -g @angular/cli 第二步.通过安装的脚手架创建项目/应用 ng new my-app 第三步.运行应用 或者看pakcage. ...
- 2025年顶级AI模型html游戏设计大比拼,到底谁才是编码王者?
面对这样一道问题,我选择了gpt-5-thinking.gemini-2.5-pro.grok4.claude sonnet 4.deepseek-v3.1-思考模式.kimi-k2.Qwen3-23 ...
- harbor仓库错误解决error when collect tags for repos
harbor镜像仓库同步镜像报这个错误FetchArtifacts error when collect tags for repos 系统版本CentOS Linux release 7.7.190 ...