【问题标题】:Convert .pem file into .crt using openssl使用 openssl 将 .pem 文件转换为 .crt
【发布时间】:2020-10-30 08:36:55
【问题描述】:

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

请看-Add certificate on request with 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

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

x509 -outform der -in client-csr.pem -out client.crt

【问题讨论】:

  • "但是我当前的证书是 .pem,所以我认为我需要先将它们转换为 .crt 和 .key" 这没有意义。首先,文件名和扩展名无关紧要。他们只是帮助人类,计算机不在乎。 PEM 是一种编码格式。 “PEM 文件”可以包含一个密钥或一个(或多个)证书。您引用的错误消息仅表示该文件不包含证书。您的问题在这里与编程无关,但此资源应该告诉您格式转换所需的一切:madboa.com/geek/openssl

标签: ssl postman restsharp pem crt


【解决方案1】:

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

扩展名.crt 表示文件的内容是一个证书。但是,扩展名并没有说明文件格式。格式可以是 PEM、DER(可分辨编码规则)(X.690) 或其他格式。如果文件包含-----BEGIN CERTIFICATE-----,则格式为 PEM。另一方面,如果文件包含二进制数据,则格式很可能是 DER。

扩展名.key 表示文件的内容是私钥。但是,扩展名并没有说明文件格式。格式可能是 PEM、DER 或其他格式。如果文件包含-----BEGIN PRIVATE KEY-----,则格式为 PEM。另一方面,如果文件包含二进制数据,则格式很可能是 DER。

作为文件名client-csr.pem的一部分的字符串csr表示文件的内容是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) 将提高您的问题质量并帮助您避免浪费时间。我希望下面摘自 "Illustrated X.509 Certificate" 的图表可以帮助到您。

【讨论】:

  • 谢谢你……我错了……我使用的是client-csr.pem,它应该是client-crt.pem
猜你喜欢
  • 2014-11-26
  • 2020-07-15
  • 2013-06-22
  • 1970-01-01
  • 1970-01-01
  • 2012-08-13
  • 2023-03-20
  • 2023-03-04
  • 1970-01-01
相关资源
最近更新 更多