Openssl 创建PEM、pfx,。。。从私人角度看,

Openssl 创建PEM、pfx,。。。从私人角度看,,openssl,rsa,pki,pem,pfx,Openssl,Rsa,Pki,Pem,Pfx,当我请求私钥时,我从某个遗留系统收到以下信息: 模数,公共EXP,私有EXP,素数P,素数Q,参数P,参数Q,Q 所有这些数据都是十六进制的,如何将其转换为openssl PEM文件或PFX 谢谢你,并致以最良好的问候 使用openssl生成RSA密钥: openssl genrsa -out rsa.pem 2048 openssl rsa -inform DER -in rsa.der -outform PEM -out rsa.pem 将RSA密钥从PEM格式转换为DER格式: ope

当我请求私钥时,我从某个遗留系统收到以下信息: 模数,公共EXP,私有EXP,素数P,素数Q,参数P,参数Q,Q

所有这些数据都是十六进制的,如何将其转换为openssl PEM文件或PFX


谢谢你,并致以最良好的问候

使用openssl生成RSA密钥:

openssl genrsa -out rsa.pem 2048
openssl rsa -inform DER -in rsa.der -outform PEM -out rsa.pem
将RSA密钥从PEM格式转换为DER格式:

openssl rsa -inform PEM -in rsa.pem -outform DER -out rsa.der
在以下位置打开文件rsa.der:

RSA私钥的ASN.1结构在PKCS#1(RFC 3447)中定义:

在ASN.1编辑器中编辑必填字段(右键单击该项并选择“以十六进制模式编辑”),然后按照此映射粘贴数据:

  MODULUS = modulus
  PUBLIC EXP = publicExponent
  PRIVATE EXP = privateExponent
  PRIME_P = prime1
  PRIME_Q = prime2
  PARAM_P = exponent1
  PARAM_Q = exponent2
  Q_MOD_INV = coefficient

根据注释进行编辑:私钥的各个部分都是大整数。当值的最左端位为1(或最左端字节等于或大于0x80)时,需要将0x00字节预挂到该值,以指示该值为正数

最后保存修改后的文件,并使用openssl将其从DER格式转换为PEM格式:

openssl genrsa -out rsa.pem 2048
openssl rsa -inform DER -in rsa.der -outform PEM -out rsa.pem

当我打开生成的der文件模数是257长度和私人经验也257。。。我有256字节的数据,现在当我编辑并转换为pem并尝试查看证书的详细信息时,我得到:无法加载证书3068241860:错误:0906D06C:pem例程:pem_read_bio:无起始行:pem_lib.c:696:预期:受信任证书私钥的各个部分都是大整数。当值的最左端位为1(或最左端字节大于0x80)时,通常会将0x00字节预先加在该值上,以指示该值为正数。这可能就是为什么一个键中有257字节,另一个键中有256字节的原因。您可以在私钥中对满足此条件的值预先花费0x00。证书解析错误表明您的证书文件可能未以正确的PEM编码存储。您可以尝试使用“opensslx509-inform DER-in file.cer-text”命令将其解析为DER编码的证书。如果这不起作用,请在文本编辑器中打开证书文件,并在注释中描述其内容(即,它是二进制文件,十六进制编码-仅包含数字,base64编码-包含数字和可打印字符等)。我已更正0x00,以满足正/负要求,并且仍然相同!当我将DER文本输出时,我得到:~#openssl x509-通知DER-在rsa.DER中-文本无法加载证书3068241860:错误:0D0680A8:asn1编码例程:asn1-检查-TLEN:错误标记:tasn\U dec.c:1329:3068241860:错误:0D07803A:asn1编码例程:asn1-项目\u exD2I:嵌套asn1错误:tasn\u dec:381:Type=x509\u CINF 8241860:错误:0D03A:asn1编码例程:ASN1_TEMPLATE_NOEXP_D2I:嵌套ASN1错误:tasn_dec.c:761:Field=cert_info,Type=X509I thin我发现,这是一个rsa密钥而不是证书,因此无法显示任何信息!答案中的过程与@jariq comment的添加一起工作!