目录
[隐藏]
我们从证书颁发机构购买拿到的域名证书是 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
扩展用于证书。 证书可以被编码为二进制DER
或ASCII 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
SSL 证书挺有用的