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