Skip to content

Linux 使用 openssl 转换证书格式

准备

shell
# 查看版本
[root@localhost ~]# openssl version
OpenSSL 1.1.1m  14 Dec 2021

# 如果未安装则需要安装(linux 下默认已安装)
[root@localhost ~]# yum install openssl openssl-devel -y

证书的编码方式

证书的编码方式主要分为两种:PEM 和 DER。

  1. .DER 扩展名 .DER 扩展用于二进制 DER 编码证书。 这些文件也可能承载 CER 或 CRT 扩展。 正确的说法是 “我有一个 DER 编码的证书” 而不是 “我有一个 DER 证书”。
  2. .PEM 扩展名 .PEM 扩展用于不同类型的 X.509v3 文件,是以“ - BEGIN ...”前缀的 ASCII(Base64)数据。

查看 PEM 编码证书

shell
openssl x509 -in certificate.pem -text –noout
openssl x509 -in certificate.cer -text –noout
openssl x509 -in certificate.crt -text –noout

如果您遇到这个错误,这意味着您正在尝试查看 DER 编码的证书,并需要使用“查看 DER 编码证书”中的命令。 unable to load certificate 12626:error:0906D06C:PEMroutines:PEM_read_bio:no start line:pem_lib.c:647:Expecting: TRUSTEDCERTIFICATE

查看 DER 编码证书

shell
openssl x509 -in certificate.der -inform der -text -noout

如果您遇到以下错误,则表示您尝试使用 DER 编码证书的命令查看 PEM 编码证书。在“查看 PEM 编码的证书”中使用命令 unable to load certificate 13978:error:0D0680A8:asn1 encodingroutines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1306: 13978:error:0D07803A:asn1 encodingroutines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:380:Type=X509

转换证书格式

转换可以将一种类型的编码证书存入另一种。(即 PEM 到 DER 转换,或 DER 到 PEM 转换)

PEM 到 DER

shell
openssl x509 -in certificate.crt -outform der-out certificate.der

DER 到 PEM

shell
openssl x509 -in certificate.crt -inform der -outform pem -out certificate.pem

证书后缀名转换

shell
# cer 转 pem
$ openssl x509 -inform PEM -in certificate.cer -out certificate.pem

# cer 转 crt
$ openssl x509 -inform PEM -in certificate.cer -out certificate.crt