1
我收到了一些旧的系统下面时,我问私钥: 模量,公共EXP,EXP PRIVATE,PRIME_P,PRIME_Q,PARAM_P,PARAM_Q,Q_MOD_INV创建PEM,PFX,...从私有模,
所有这些数据都是十六进制的,我如何将它转换为openssl PEM文件或PFX?
谢谢,最好的问候!
我收到了一些旧的系统下面时,我问私钥: 模量,公共EXP,EXP PRIVATE,PRIME_P,PRIME_Q,PARAM_P,PARAM_Q,Q_MOD_INV创建PEM,PFX,...从私有模,
所有这些数据都是十六进制的,我如何将它转换为openssl PEM文件或PFX?
谢谢,最好的问候!
生成与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:
定义了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
当我打开生成的文件DER模数为257的长度和私人EXP也是257 ...我有256个字节的数据,现在当我编辑并转换为pem并试图查看我获得的证书的详细信息时: 无法加载证书 3068241860:error:0906D06C:PEM例程:PEM_read_bio:no start line:pem_lib.c:696:预计:TRUSTED CERTIFICATE – Lonko
私钥的个别部分是大整数。当值的最左边位为1(或最左边的字节大于0x80)时,通常会预先写入0x00字节以指示该值为正数。这可能是您在一个密钥中有257个字节,另一个密钥中有256个字节的原因。您可以在您的私钥中将0x00添加到符合此条件的值。 – jariq
证书解析错误表明您的证书文件可能没有存储在正确的PEM编码中。您可以尝试使用“openssl x509 -inform DER -in file.cer -text”命令将其解析为DER编码证书。如果这不能在文本编辑器中打开证书文件并在注释中描述其内容(即,它是二进制文件,十六进制编码 - 仅包含数字,base64编码 - 包含数字和可打印字符等)。 – jariq