最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
SSL 证书如何将 PFX 格式证书转换为 Nginx 可用的 PEM 格式
时间:2026-08-17 08:18:49 编辑:袖梨 来源:一聚教程网
Nginx不支持PFX,须拆解为server.crt(含完整证书链)和server.key(无密码PEM私钥,chmod 600);需用openssl pkcs12分步导出并手动校验顺序、编码、权限及格式。
Nginx 不支持直接使用 PFX 文件,必须拆解为两个独立的 PEM 格式文件:一个含证书链的 .crt(或 .pem),一个明文私钥 .key。整个过程本质是“解包+分离+校验”,不是简单改后缀。
提取私钥(server.key)
PFX 中的私钥默认加密,Nginx 要求能直接读取——所以需导出为无密码的 PEM 私钥(生产环境建议后续再加密码保护):执行命令:
openssl pkcs12 -in your-cert.pfx -nocerts -nodes -out server.key
输入 PFX 文件密码后,输出的 server.key 应以 -----BEGIN PRIVATE KEY----- 开头。完成后立即设置权限:
chmod 600 server.key
Nginx 拒绝加载权限高于 600 的私钥文件,这是硬性要求。
提取证书链(server.crt)
PFX 里通常包含服务器证书 + 一个或多个中间证书。Nginx 的ssl_certificate 必须是完整链(服务器证书在前,中间证书紧随其后),不能只放单张证书。推荐分两步操作,避免遗漏中间证书:
- 先导出完整 PEM 包:
openssl pkcs12 -in your-cert.pfx -out cert.pem -nodes - 用文本编辑器打开 cert.pem,手动拆分:
- 第一个
-----BEGIN CERTIFICATE-----到对应-----END CERTIFICATE-----→ 保存为 server.crt - 后续所有
-----BEGIN CERTIFICATE-----块 → 全部复制粘贴追加到 server.crt 文件末尾(顺序不能错) - 单独的
-----BEGIN PRIVATE KEY-----块 → 已用于生成 server.key,此处忽略
- 第一个
验证与检查要点
转换完成后,务必确认以下几项:
-
编码无 BOM:用
file server.crt server.key检查是否为 “ASCII text”;若显示 “UTF-8 Unicode (with BOM)”,需用 vim 或 dos2unix 清除 BOM -
无多余空行:证书和私钥块首尾不能有空行,尤其
-----END后不可换行再写内容 -
证书链顺序正确:
head -n 5 server.crt应看到服务器证书,再往下应是中间证书,根证书一般不放入 -
私钥格式合规:运行
openssl rsa -check -in server.key -noout,无报错才表示私钥可被 Nginx 正确加载
Nginx 配置中如何使用
配置段示例(路径按实际调整):
server {listen 443 ssl;server_name example.com;ssl_certificate /etc/nginx/ssl/server.crt;ssl_certificate_key /etc/nginx/ssl/server.key;# 其他 SSL 设置(协议、加密套件等)ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
}
注意:ssl_certificate 指向的是合并了服务器证书和中间证书的 server.crt,不是原始 PFX,也不是单张证书。
相关文章
- 泰国成立专门机构,重点管控数据中心对电力、水资源及环境的影响 08-17
- 弹弹堂极武器哪个好 08-17
- 魔兽争霸哪个图更好打 08-17
- 互传app怎么查看发送记录 08-17
- 快对ai怎么查看历史记录-快对作业历史记录怎么删除 08-17
- 希望大家能推荐一款软件,可以直接把DeepSeek生成的代码变流程图,提高办公效率 08-17