2014-02-27 35 views
1

我收到了一些旧的系统下面时,我问私钥: 模量,公共EXP,EXP PRIVATE,PRIME_P,PRIME_Q,PARAM_P,PARAM_Q,Q_MOD_INV创建PEM,PFX,...从私有模,

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

谢谢,最好的问候!

回答

3

生成与OpenSSL的RSA密钥:

openssl genrsa -out rsa.pem 2048 

从PEM格式转换RSA密钥为DER格式:

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

打开文件rsa.der在ASN.1 Editor

File rsa.der opened in ASN.1 Editor

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

RSAPrivateKey ::= SEQUENCE { 
     version   Version, 
     modulus   INTEGER, -- n 
     publicExponent INTEGER, -- e 
     privateExponent INTEGER, -- d 
     prime1   INTEGER, -- p 
     prime2   INTEGER, -- q 
     exponent1   INTEGER, -- d mod (p-1) 
     exponent2   INTEGER, -- d mod (q-1) 
     coefficient  INTEGER, -- (inverse of q) mod p 
     otherPrimeInfos OtherPrimeInfos OPTIONAL 
    } 

编辑在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字节预填到该值以指示它是正数。

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

openssl rsa -inform DER -in rsa.der -outform PEM -out rsa.pem 
+0

当我打开生成的文件DER模数为257的长度和私人EXP也是257 ...我有256个字节的数据,现在当我编辑并转换为pem并试图查看我获得的证书的详细信息时: 无法加载证书 3068241860:error:0906D06C:PEM例程:PEM_read_bio:no start line:pem_lib.c:696:预计:TRUSTED CERTIFICATE – Lonko

+1

私钥的个别部分是大整数。当值的最左边位为1(或最左边的字节大于0x80)时,通常会预先写入0x00字节以指示该值为正数。这可能是您在一个密钥中有257个字节,另一个密钥中有256个字节的原因。您可以在您的私钥中将0x00添加到符合此条件的值。 – jariq

+0

证书解析错误表明您的证书文件可能没有存储在正确的PEM编码中。您可以尝试使用“openssl x509 -inform DER -in file.cer -text”命令将其解析为DER编码证书。如果这不能在文本编辑器中打开证书文件并在注释中描述其内容(即,它是二进制文件,十六进制编码 - 仅包含数字,base64编码 - 包含数字和可打印字符等)。 – jariq