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

Convert .pem file into .crt using openssl

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

请看 -

如图所示post。我需要将 .crt 和 .key 转换为 .pfx,但是我当前的证书是 .pem,所以我想我需要先将它们转换为 .crt 和 .key,然后使用其中使用的 openssl 命令 post 将它们转换为 .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表示文件格式为PEM(隐私增强邮件)(RFC 7468)。文件的内容可能是证书、私钥、public 密钥或其他内容。如果您使用文本编辑器打开 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证书"的图表能对您有所帮助。