SSL 证书(cer)及密钥(key)与 pfx 的转换

目录
[隐藏]

我们从证书颁发机构购买拿到的域名证书是 key 和 cer 后缀的,这在绝大多数 web 服务器上都可以直接使用。但是在 Windows IIS 上需要 pfx 格式的证书。

1 SSL 证书及私钥与 pfx 格式的互相转换

1.1 SSL 证书与私钥合并生成 pfx 格式

我们可以使用 openssl 进行证书转换,生成用于 IIS 的 pfx 格式证书文件。示例:

# 基于 lzw.me.key 和 lzw.me.cer 生成 lzw.me.pfx
openssl pkcs12 -export -out lzw.me.pfx -inkey lzw.me.key -in lzw.me.cer

# 带 CA 的转换:基于 lzw.me.key 、lzw.me.crt 和 lzw.me_ca.crt 生成 lzw.me_ca.pfx
openssl pkcs12 -export -out lzw.me_ca.pfx -inkey lzw.me.key -in lzw.me.crt -CAfile lzw.me_ca.crt

1.2 基于 pfx 文件提取私钥与证书

如果你只有 pfx 格式的证书,也可以使用 openssl 提取出 key 格式的密钥和 cer/crt 格式的证书。以下为相关命令示例参考:

# 证书和私钥提取至lzw.me.pem
openssl pkcs12 -in lzw.me.pfx -nodes -out lzw.me.pem
# 提取 RSA key 密钥
openssl rsa -in lzw.me.pem -out lzw.me.key
# 提取 x509 证书
openssl x509 -in lzw.me.pem -out lzw.me.crt

2 不同类型的证书格式及编码简介

2.1 不同类型的证书编码与扩展名

  • .CRT 扩展用于证书。 证书可以被编码为二进制 DERASCII PEM。CER 和 CRT 扩展几乎是同义词。最常见的于 Unix 或类 Unix 系统。
  • .CER.crt 的替代形式。
  • .KEY 扩展名用于公钥和私钥 PKCS#8。 键可以被编码为二进制DER或ASCII PEM。

2.2 查看证书

openssl x509 -in lzw.me.pem -text –noout
openssl x509 -in lzw.me.cer -text –noout
openssl x509 -in lzw.me.crt -text –noout

openssl x509 -in lzw.me.der -inform der -text -noout

2.3 常见的证书类型转换

  • CER/CRT 转换为 PEM

可直接修改证书文件扩展名。如: lzwme.crt -> lzwme.pem

  • PFX 转换为 PEM

PFX 格式一般出现在 windows server 中。提取证书与私钥示例:

# 提取证书
openssl pkcs12 -in lzw.me.pfx -nokeys -out cert.pem
# 提取私钥
openssl pkcs12 -in lzw.me.pfx -nocerts -out key.pem -nodes
  • P7B 转换为 PEM

P7B 格式一般出现在 windows server 和 tomcat 中。转换示例:

openssl pkcs7 -print_certs -in lzwme.p7b -out lzwme.cer
  • DER 转换为 PEM

DER 格式一般出现在 java 平台中。

# 转换证书
openssl x509 -inform der -in lzwme.cert.cer -out lzwme.cert.pem
# 转换私钥
openssl rsa -inform DER -outform PEM -in lzwme.privatekey.der -out lzwme.privatekey.pem
点赞 (0)
  1. b2b系统说道:
    Google Chrome 86.0.4240.198 Google Chrome 86.0.4240.198 Windows 10 x64 Edition Windows 10 x64 Edition

    SSL 证书挺有用的

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Captcha Code