StanTastic Asked: 2020-03-13 02:59:11 +0800 CST2020-03-13 02:59:11 +0800 CST 2020-03-13 02:59:11 +0800 CST 从 PEM 创建 DER 证书+密钥 772 我不确定这是否可能。此外,OpenSSL 是一个丑陋的实用程序的母爱:/ 至少根据他们的技术支持,我需要将顶级证书+私钥作为 DER 上传到 ESET 安全管理中心 (ESMC)。 我将 XCA 用于这个小型部署,并且没有选项可以将 public+private 导出为 DER,只有 PEM(或其他一些格式)。那么问题来了:如何将 PEM private+public 转换为 DER? openssl x509 2 个回答 Voted Best Answer Kamil J 2020-03-13T04:36:37+08:002020-03-13T04:36:37+08:00 PEM 和 DER 之间的区别仅在于它的存储方式。DER 是二进制形式,PEM 是 base64 编码文件(带有“标题”)。由于 DER 或多或少是原始形式,因此您只能在文件中存储一个对象。 如果您需要更多对象(例如密钥和证书),则需要 PEM 编码形式,其中基于“标题”可以区分对象(在文件中对象相互跟随)或某些特定容器格式,如 PKCS12(也支持通过openssl)。 对于 openssl,您可以使用选项inform并outform指定您是否对 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 Lacek 2020-03-13T03:23:42+08:002020-03-13T03:23:42+08:00 据我所知,您不能将 DER 编码的密钥和证书存储在一个文件中。您需要分别导出密钥和证书。使用 XCA,您可以执行此操作,在导出时选择“DER”选项。 如果您使用 OpenSSL,则需要指定outform开关,该开关指示 OpenSSL 在写入文件时应使用的格式(pem或der): 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)。
PEM 和 DER 之间的区别仅在于它的存储方式。DER 是二进制形式,PEM 是 base64 编码文件(带有“标题”)。由于 DER 或多或少是原始形式,因此您只能在文件中存储一个对象。
如果您需要更多对象(例如密钥和证书),则需要 PEM 编码形式,其中基于“标题”可以区分对象(在文件中对象相互跟随)或某些特定容器格式,如 PKCS12(也支持通过openssl)。
对于 openssl,您可以使用选项
inform
并outform
指定您是否对 PEM 感兴趣(如果您不请求 DER,则默认使用)或 DER。对于密钥(假设 rsa) - 由于 PEM 是默认的,因此以下命令是相等的:
对于证书 - 也是两种相等的形式:
如果是 pkcs12 容器(如果支持,如果需要,将在导入期间完成转换):
据我所知,您不能将 DER 编码的密钥和证书存储在一个文件中。您需要分别导出密钥和证书。使用 XCA,您可以执行此操作,在导出时选择“DER”选项。
如果您使用 OpenSSL,则需要指定
outform
开关,该开关指示 OpenSSL 在写入文件时应使用的格式(pem
或der
):如果您需要上传一个文件,那么您需要使用某种容器(例如 PKCS12)。