从 PEM 创建 DER 证书+密钥

从 PEM 创建 DER 证书+密钥

我不确定这是否可行。此外,OpenSSL 是一个丑陋的实用程序 :/

我需要将证书+私钥作为 DER 上传到 ESET 安全管理中心 (ESMC),至少根据他们的技术支持。

我使用 XCA 进行这个小型部署,没有将 public+private 导出为 DER 的选项,只有 PEM(或其他几种格式)。所以问题是:如何将 PEM private+public 转换为 DER?

答案1

PEM 和 DER 之间的区别仅在于其存储方式。DER 是二进制形式,而 PEM 是 base64 编码文件(带有“标头”)。由于 DER 或多或少是原始形式,因此您可以在文件中仅存储一个对象。

如果您需要更多对象(例如密钥和证书),您需要 PEM 编码形式,其中基于“标题”可以区分对象(在文件中,对象相互跟随)或某些特定的容器格式,如 PKCS12(也受 openssl 支持)。

对于 openssl,您可以使用选项informoutform指定您是否对 PEM(默认,因此在您不请求 DER 的情况下使用)或 DER 感兴趣。

对于密钥(假设为 rsa)- 由于 PEM 是默认的,以下命令是相等的:

openssl rsa -in <file_with_key> -out <new_der_key_file> -outform DER
openssl rsa -in <file_with_key> -inform PEM -out <new_der_key_file> -outform DER

对于证书-也有两种相同的形式:

openssl x509 -in <cert_file> -out <new_der_cert> -outform DER
openssl x509 -in <cert_file> -inform PEM -out <new_der_cert> -outform DER

如果是 pkcs12 容器(如果支持,则在需要时将在导入期间进行转换):

openssl pkcs12 -export -in <cert_file> -inkey <key_file> -out <pkcs12_file>.p12

答案2

据我所知,您不能将 DER 编码的密钥和证书存储在一个文件中。您需要分别导出密钥和证书。使用 XCA,您可以执行此操作,并在导出时选择“DER”选项。

如果您使用 OpenSSL,则需要指定outform开关,它规定 OpenSSL 在写入文件时应使用的格式(pemder):

openssl rsa -in /the/cert/and/the/key.pem -out key_in_der.key -outform der
openssl x509 -in /the/cert/and/the/key.pem -out cert_in_der.crt -outform der

如果您需要上传一个文件,那么您需要使用某种容器(例如PKCS12)。

相关内容