解码与转换
SSL 证书格式转换
在 PEM、DER、PFX/PKCS #12 和 P7B 之间转换证书和私钥。全程在浏览器里完成,私钥不会上传。
浏览器本地运行 私钥在你的浏览器里(WebCrypto)生成和处理,不会离开你的设备,也不会上传到 ssl.sh。
证书格式转换工具不用装 OpenSSL,就能把证书和私钥在各种格式之间互转。在顶部选择模式(比如 PEM 转 PFX),粘贴内容或选择文件,再下载结果。所有转换都在浏览器里用 JavaScript 完成,证书和私钥不会上传。
怎么用
- 在顶部选择转换方式,每种方式都有单独的说明页,链接在工具上方。
- 粘贴 PEM 文本或选择文件;PFX 文件要输入密码。
- 点 转换(PEM → PFX 模式下是“生成 PFX”),下载需要的文件。
各模式说明
- PEM 转 DER:每个 PEM 块(证书、私钥、CSR)各转成一个二进制
.der文件。 - DER 转 PEM:二进制证书、私钥、CSR 或 DER 格式的
.p7b转成 PEM 文本。 - PEM 转 PFX:把证书、证书链和私钥打包成带密码的
.pfx,会检查私钥是否匹配并整理证书链顺序。详见 PEM 转 PFX。 - PFX 转 PEM:把
.pfx/.p12拆成fullchain.pem、cert.pem、chain.pem和私钥。详见 PFX 转 PEM。 - P7B 转 PEM:从 PKCS #7 证书包里取出证书并按链排序。
- CRT 转 PEM:不管
.crt/.cer是哪种编码,都转成 PEM。
国内常见场景
- 阿里云、腾讯云下载证书时按服务器类型打包:Nginx 包是
.pem/.crt+.key,可以直接用;IIS 包是.pfx+ 密码 txt;Tomcat 包是.pfx或.jks+ 密码 txt。手上只有 PFX 但要在 Nginx 或宝塔上用,就用 PFX 转 PEM。 - 宝塔面板需要粘贴“密钥(KEY)”和“证书(PEM格式)”两段文本:分别对应这里输出的私钥和
fullchain.pem。 - Windows 服务器(IIS、Exchange、远程桌面)导入证书要 PFX,用 PEM 转 PFX,老版本系统勾选兼容模式。
等价的 OpenSSL 命令
# PEM 转 DER
openssl x509 -in cert.pem -outform DER -out cert.der
# PEM + 私钥 转 PFX
openssl pkcs12 -export -out site.pfx -inkey privkey.pem -in cert.pem -certfile chain.pem
# PFX 转 PEM(OpenSSL 3 读旧版 RC2 加密的文件要加 -legacy)
openssl pkcs12 -in site.pfx -nodes -out all.pem
# P7B 转 PEM
openssl pkcs7 -print_certs -in certs.p7b -out certs.pem
注意事项
- PFX 里有私钥,一定要设强密码,不用的副本及时删除。
- PFX 转出来的
privkey.pem是不加密的,因为 Web 服务器需要这样,请用文件权限保护好。 - DER 一个文件只能放一个对象,证书链需要多个文件,或者用 PEM/P7B。
常见问题
我的服务器需要什么格式?
Nginx、Apache、HAProxy、宝塔面板和阿里云/腾讯云上传证书都用 PEM(证书 + 私钥)。IIS、Windows、Azure、Exchange 和很多 Java/Tomcat 环境导入 PFX。部分 Windows 和 Java 工具用 P7B 导入不含私钥的证书链。
把私钥放进在线转换工具安全吗?
只有在本地转换才安全。这个工具是在你浏览器里运行的 JavaScript:私钥从文本框或文件读入,在内存里转换后直接下载,不会发给 ssl.sh。页面加载完断开网络再操作,同样能用。
Windows 提示 PFX 密码错误,可密码明明是对的?
Windows Server 2016 等较老的 Windows 读不了用 AES-256 加 SHA-256 MAC 的 PFX。用兼容模式(3DES + SHA-1)重新生成即可。
.crt、.cer、.pem 有什么区别?
只是扩展名不同。.crt 和 .cer 里可能是 PEM 文本也可能是 DER 二进制,用 CRT 转 PEM 模式可以自动识别并输出 PEM。