从 PEM 创建 DER 证书+密钥

Sta*_*tic 2 openssl x509

我不确定这是否可能。另外,OpenSSL 是一个丑陋的实用程序之母:/

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

我使用 XCA 进行此小型部署,并且没有选项将公共+私有导出为 DER,只能导出 PEM(或其他一些格式)。那么问题来了:如何将PEM private+public 转换为DER?

Kam*_*l J 5

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
Run Code Online (Sandbox Code Playgroud)

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

openssl x509 -in <cert_file> -out <new_der_cert> -outform DER
openssl x509 -in <cert_file> -inform PEM -out <new_der_cert> -outform DER
Run Code Online (Sandbox Code Playgroud)

如果是 pkcs12 容器(如果支持的话,如果需要,将在导入期间完成转换):

openssl pkcs12 -export -in <cert_file> -inkey <key_file> -out <pkcs12_file>.p12
Run Code Online (Sandbox Code Playgroud)