PEM 转 PFX
把 PEM 证书、证书链和私钥打包成一个带密码的 .pfx/.p12 文件,全程在浏览器里完成。
浏览器本地运行 私钥在你的浏览器里(WebCrypto)生成和处理,不会离开你的设备,也不会上传到 ssl.sh。
PEM 转 PFX 工具把证书、证书链和私钥打包成一个带密码的 PFX(也叫 P12、PKCS #12)。粘贴证书(带不带中间证书都行)、私钥,以及可选的证书链,设置密码后点 生成 PFX。工具会确认私钥属于这张证书、排好证书链顺序,然后提供 .pfx 下载。私钥只在你的浏览器里处理。
什么时候需要 PFX
- IIS 和 Windows Server:证书导入向导和
Import-PfxCertificate都要 PFX。 - Azure 应用服务、Key Vault:上传证书要 PFX。
- Exchange、远程桌面、ADFS 等 Windows 服务。
- Java 和 Tomcat:Java 9 起 PKCS #12 是默认密钥库类型,Tomcat 可以直接用
certificateKeystoreFile读取。
国内常见情况
- 在阿里云、腾讯云申请时如果下载的是 Nginx 格式(
.pem/.crt+.key),但服务器是 IIS,就在这里转成 PFX;不过云厂商通常也提供 IIS 格式的下载包,里面直接就是.pfx和密码文件。 - 手动部署 IIS 时,把 PFX 导入“本地计算机 → 个人”证书存储,再在站点的 https 绑定里选择这张证书。
步骤
- 粘贴证书。CA 发来的是证书包就整体粘贴,站点证书放不放第一位都行,工具会按私钥找出站点证书。
- 粘贴私钥(
BEGIN PRIVATE KEY、BEGIN RSA PRIVATE KEY或BEGIN EC PRIVATE KEY),加密的私钥填上私钥密码。 - 两次输入 PFX 密码,可选填“友好名称”(在 Windows 证书管理里显示)。
- 只有老系统才勾选兼容模式,然后点 生成 PFX。
等价的 OpenSSL 命令
# OpenSSL 3 默认:AES-256-CBC、PBKDF2、HMAC-SHA256
openssl pkcs12 -export -out example.com.pfx -inkey privkey.pem -in cert.pem -certfile chain.pem -name example.com
# 兼容模式:Windows Server 2016 / Java 8
openssl pkcs12 -export -out example.com.pfx -inkey privkey.pem -in cert.pem -certfile chain.pem \
-keypbe PBE-SHA1-3DES -certpbe PBE-SHA1-3DES -macalg sha1
常见错误
- “私钥和这些证书都不匹配”:私钥来自另一份 CSR,用私钥匹配工具找到对的私钥。
- Windows 提示密码不正确(其实没输错):系统读不了 AES 加密的 PFX,用兼容模式重新生成。
- 导入后检查显示证书链不完整:PFX 里没带中间证书,或者 Windows 里已有过期的中间证书。带上证书链重新导入。
常见问题
选哪种加密方式?
Windows Server 2019 及以上、新版 macOS、Java 11+ 用默认的 AES-256。老系统导入时提示密码错误或无法识别,再用兼容模式(3DES + SHA-1)重新生成。
根证书要放进 PFX 吗?
服务器用的话不需要,客户端本来就有根证书。放站点证书和中间证书即可。
PFX 能不设密码吗?
技术上可以,Windows 也能导入,但拿到文件的人就拿到了私钥。只要文件要离开服务器,就一定设密码。