DER、CRT、CER、PEM证书格式介绍及转换方法

本文详细介绍了X.509证书的不同文件扩展名,如DER、PEM、CRT和CER,以及它们之间的区别。X.509证书是基于RFC5280标准的数字文档,用于公钥基础设施。DER是二进制编码,PEM是ASCII Base64编码。CRT和CER常用于表示证书,且在某些系统中可互换。此外,文章还涵盖了如何查看、转换证书格式以及提取证书内容的操作方法。
部署运行你感兴趣的模型镜像

其英文原文地址: https://support.ssl.com/index.php?/Knowledgebase/Article/View/19/0/der-vs-crt-vs-cer-vs-pem-certificates-and-how-to-convert-them
译文如下,有翻译错误的地方,还望指正。

一、证书和编码

X.509证书,其核心是根据RFC 5280编码或数字签名的数字文档。

实际上,术语X.509证书通常指的是IETF的PKIX证书和X.509 v3证书标准的CRL 文件,即如RFC 5280(通常称为PKIX for Public Key Infrastructure(X.509))中规定的。

二、X509文件扩展

我们首先要了解的是每种类型的文件扩展名。 很多人不清楚DER,PEM,CRT和CER结尾的文件是什么,更有甚者错误地说是可以互换的。 在某些情况下,某些可以互换,最佳做法是识别证书的编码方式,然后正确标记。 正确标签的证书将更容易操纵

三、编码方式决定扩展名类型

1).DER 扩展名

.DER 扩展用于二进制DER编码证书。
这些文件也可能承载CER或CRT扩展。 正确的说法是“我有一个DER编码的证书”不是“我有一个DER证书”。

2).PEM 扩展名

.PEM 扩展用于不同类型的X.509v3文件,是以“ - BEGIN ...”前缀的ASCII(Base64)数据。

3)常见的扩展

3.1).CRT 扩展名

.CRT 扩展用于证书。 证书可以被编码为二进制DER或ASCII PEM。 CER和CRT扩展几乎是同义词。 最常见的于Unix 或类Unix系统。

3.2).CER扩展名

CER 是.crt的替代形式(Microsoft Convention)您可以在微软系统环境下将.crt转换为.cer(.both DER编码的.cer,或base64 [PEM]编码的.cer)。

可参考:https://support.comodo.com/index.php?/Knowledgebase/Article/View/361/17/how-do-i-convert-crt-file-into-the-microsoft-cer-format

.cer文件扩展名也被IE识别为 一个运行MS cryptoAPI命令的命令(特别是rundll32.exe cryptext.dll,CryptExtOpenCER),该命令显示用于导入和/或查看证书内容的对话框。

3.3).KEY 扩展名

.KEY扩展名用于公钥和私钥PKCS#8。 键可以被编码为二进制DER或ASCII PEM。

四、常见的OpenSSL证书操作

证书操作有四种基本类型。查看,转换,组合和提取。

1)查看证书

即使PEM编码的证书是ASCII,它们是不可读的。这里有一些命令可以让你以可读的形式输出证书的内容;

1.1)查看PEM编码证书

  openssl x509 -in cert.pem -text –noout
  openssl x509 -in cert.cer -text –noout
  openssl x509 -in cert.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

1.2)查看DER编码证书

  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

2)转换证书格式

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

openssl x509 -in cert.crt -outform der-out cert.der

DER到PEM

openssl x509 -in cert.crt -inform der -outform pem -out cert.pem

3)组合证书

在某些情况下,将多个X.509基础设施组合到单个文件中是有利的。一个常见的例子是将私钥和公钥两者结合到相同的证书中。
组合密钥和链的最简单的方法是将每个文件转换为PEM编码的证书,然后将每个文件的内容简单地复制到一个新文件中。这适用于组合文件以在Apache中使用的应用程序。

4)证书提取

一些证书将以组合形式出现。 一个文件可以包含以下任何一个:证书,私钥,公钥,签名证书,证书颁发机构(CA)和/或权限链。



 

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

<think>我们参考用户提供的引用内容,特别是引用[2]和引用[3]中关于证书格式转换的部分。用户明确要求将CER格式证书转换为PEM格式。根据引用[2]:“将cer格式证书转成pem格式,命令是:openssl x509 -inform der-inparam1.cer-outparam2.pem”这里的关键是`-informder`,因为CER格式可能是DER编码的二进制格式(也可能是Base64编码的,但通常CER扩展名可能代表DER格式)。如果CER文件是文本格式(即PEM格式,但扩展名为.cer),那么转换方法不同。但是,用户没有说明CER文件是文本格式还是二进制格式。我们可以根据常见情况,假设CER文件是DER格式(二进制)。如果转换失败,再考虑其他情况。另外,引用[3]中也有类似命令:“opensslx509-informder -in xxx.cer-outxxx.pem”因此,我们推荐使用以下命令:步骤:1.打开终端(Linux/Mac)或命令提示符(Windows,需安装OpenSSL)。2.使用以下命令进行转换:opensslx509-informder -in输入文件名.cer-out输出文件名.pem解释:- `-informder`:指定输入文件的格式DER(二进制格式)。- `-in输入文件名.cer`:指定输入的CER文件。- `-out输出文件名.pem`:指定输出的PEM文件。注意:如果CER文件已经是Base64编码的文本格式(即类似PEM格式),那么可以省略`-informder`参数,或者使用`-inform pem`。但是,通常扩展名为.cer的文件是DER格式,而.crt可能是PEM格式。如果使用上述命令转换失败,可以尝试去掉`-inform der`,因为OpenSSL默认会尝试PEMDER两种格式。因此,如果上述命令失败,可以尝试:openssl x509 -in输入文件名.cer-out输出文件名.pem因为OpenSSL的x509命令在读取输入文件时会自动检测格式PEMDER)。另外,引用[1]和引用[4]提供了其他转换,但与本问题不直接相关。总结:推荐首先尝试将CER作为DER格式转换,如果失败再尝试自动检测格式。示例:假设有一个名为`mycert.cer`的文件(DER格式),要转换为`mycert.pem`,则命令为:openssl x509 -inform der-inmycert.cer-outmycert.pem如果`mycert.cer`是PEM格式(文本格式),则可以使用:opensslx509-inmycert.cer-outmycert.pem#或者直接重命名,但为了确保格式正确,建议转换注意:转换后的PEM文件是文本文件,以`-----BEGINCERTIFICATE-----`开头,`-----ENDCERTIFICATE-----`结尾。如果用户没有OpenSSL工具,需要先安装。在Linux上通常已经安装,在Windows上可以从OpenSSL官网下载安装。另外,引用[4]提到了keytool生成密钥对,但这不是转换证书的命令,所以不适用。因此,我们给出两种可能的情况,并建议用户首先尝试第一种(DER格式转换)。最后,生成相关问题。</think>### 如何将 CER 证书转换为 PEM 格式 根据您提供的引用内容,CER 格式证书转换为 PEM 格式主要有两种方法,具体取决于 CER 文件的编码格式DER 或 Base64)。以下是详细操作步骤: #### 方法 1:DER 编码的 CER 文件 → PEM **适用场景** 当 CER 文件是二进制格式时(通常通过文件头判断,非文本可读): ```bash openssl x509 -inform der -in 证书文件名.cer -out 输出文件名.pem ``` **参数说明** - `-inform der`:指定输入为 DER 格式 - `-in`:输入 CER 文件名 - `-out`:输出 PEM 文件名 **示例** ```bash openssl x509 -inform der -in server.cer -out server.pem ``` #### 方法 2:Base64 编码的 CER 文件 → PEM **适用场景** 当 CER 文件是文本格式(以 `-----BEGIN CERTIFICATE-----` 开头): ```bash openssl x509 -in 证书文件名.cer -out 输出文件名.pem ``` **说明** 此时无需 `-inform der` 参数,OpenSSL 会自动识别 Base64 编码。 #### 验证结果 成功转换的 PEM 文件应包含标准头尾标识: ``` -----BEGIN CERTIFICATE----- [Base64编码的证书内容] -----END CERTIFICATE----- ``` #### 注意事项 1. **OpenSSL 安装**:需提前安装 [OpenSSL](https://www.openssl.org/) 工具 2. **格式判断**: - 二进制 DER 文件:用文本编辑器打开显示乱码 - Base64 文件:可直接看到文本内容 3. **跨平台兼容**:该方法适用于 Windows/Linux/macOS 系统 4. **私钥处理**:此转换仅针对证书(公钥),私钥需单独处理(通常使用 `.key` 文件存储)[^3] > 引用说明:转换方法基于 OpenSSL 官方文档,具体参数参考引用[2][3]的操作流程。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值