Linux 使用 openssl 生成及转换证书格式
准备
shell
# 查看版本
[root@localhost ~]# openssl version
OpenSSL 1.1.1m 14 Dec 2021
# 如果未安装则需要安装(linux 下默认已安装)
dnf install openssl openssl-devel -y
# 查看帮助命令
openssl x509 --help证书的编码方式
证书的编码方式主要分为两种:PEM 和 DER。
- .DER 扩展名 .DER 扩展用于二进制 DER 编码证书。 这些文件也可能承载 CER 或 CRT 扩展。 正确的说法是 “我有一个 DER 编码的证书” 而不是 “我有一个 DER 证书”。
- .PEM 扩展名 .PEM 扩展用于不同类型的 X.509v3 文件,是以“ - BEGIN ...”前缀的 ASCII(Base64)数据。
查看证书有效期
shell
openssl x509 -in certificate.pem -noout -dates查看 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
生成 .key + .crt 证书文件
shell
openssl req -x509 -newkey rsa:2048 -nodes -keyout server.key -out server.crt -days 36500命令参数说明: -x509:生成自签名证书(标准格式) -newkey rsa:2048:生成 2048 位 RSA 私钥 -nodes:不加密私钥(部署服务时不用输密码,最常用) -keyout server.key:输出私钥文件 -out server.crt:输出证书文件 -days 36500:有效期 100 年(可自行修改)
执行后会让你填一些信息,全部直接回车跳过即可,不影响使用。
转换证书格式
转换可以将一种类型的编码证书存入另一种。(即 PEM 到 DER 转换,或 DER 到 PEM 转换)
PEM 到 DER
shell
openssl x509 -in certificate.crt -outform der-out certificate.derDER 到 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