使用 openssl 将 .pem 文件转换为 .crt

HH4*_*H44 1 ssl crt pem restsharp postman

我希望能够在 API 请求中发送证书。

请参阅 -根据 RestSharp 请求添加证书

正如那篇文章所示。我需要将 .crt 和 .key 转换为 .pfx ,但是我当前的证书是 .pem ,所以我想我需要先将它们转换为 .crt 和 .key ,然后使用该帖子中使用的 openssl 命令来转换它们到 .pfx 中,然后继续解决方案的其余部分。

我的证书是——

CRT 文件 - C:\Users\JohnSmith\Downloads\certsh\client-crt.pem

密钥文件 - C:\Users\JohnSmith\Downloads\certsh\client-key.pem

我能够将 Key 文件转换为 .key ,但是当尝试转换 CRT 文件时,我收到此错误。

unable to load certificate 13668:error:0906D06C:PEM routines:PEM_read_bio:no start line:.\crypto\pem\pem_lib.c:697:Expecting: TRUSTED CERTIFICATE error in x509
Run Code Online (Sandbox Code Playgroud)

我正在使用此命令尝试将 .pem 转换为 .crt

x509 -outform der -in client-csr.pem -out client.crt
Run Code Online (Sandbox Code Playgroud)

Tak*_*aki 11

扩展名.pem表明该文件的格式是PEM(隐私增强邮件)(RFC 7468)。文件的内容可以是证书、私钥、公钥或其他内容。如果您使用文本编辑器打开 PEM 文件,您将-----BEGIN ?????-----在顶部看到。

扩展名.crt意味着文件的内容是证书。但是,扩展名不会告诉您有关文件格式的任何信息。格式可以是 PEM、DER(杰出编码规则)( X.690 ) 或其他格式。如果文件包含-----BEGIN CERTIFICATE-----,则格式为 PEM。另一方面,如果文件包含二进制数据,则格式很可能是 DER。

扩展名.key意味着文件的内容是私钥。但是,扩展名不会告诉您有关文件格式的任何信息。格式可能是 PEM、DER 或其他格式。如果文件包含-----BEGIN PRIVATE KEY-----,则格式为 PEM。另一方面,如果文件包含二进制数据,则格式很可能是 DER。

字符串csr是文件名的一部分client-csr.pem,暗示文件的内容是CSR(证书签名请求)。请注意,CSR 不是证书。看来您正在尝试将文件格式client-csr.pem从 PEM 转换为 DER,但 CSR 永远不会通过转换文件格式而成为证书。我认为你应该给命令的openssl不是client-csr.pem而是client-crt.pem

了解ASN.1 ( X.680 )、DER ( X.690 )、BASE64 ( RFC 4648 ) 和PEM ( RFC 7468 )之间的关系将提高您的问题质量并帮助您避免浪费时间。我希望下面摘录自X.509证书图解的图表可以对您有所帮助。

在此输入图像描述

在此输入图像描述