2013-07-22 36 views
2

當使用相同的密鑰和證書文件創建PKCS12(PKCS#12/p12)文件時,我注意到連續調用OpenSSLpkcs12能力每次產生不同的ENCRYPTED PRIVATE KEY內容(我也使用相同的導入密碼和PEM密碼短語)。這是否應該發生?我猜測它與一個不同的IV(初始化向量)或與私鑰的對稱加密相關的salt有關,但我想確定。連續的OpenSSL PKCS12代產生不同的私鑰內容

我用下面的命令來創建cred1.p12和cred2.p12文件:

openssl pkcs12 -export -in certs/cert.pem -out cred1.p12 -name "My credentials" -inkey private/key.pem 
openssl pkcs12 -export -in certs/cert.pem -out cred2.p12 -name "My credentials" -inkey private/key.pem 

當我比較所產生的.p12文件(diff cred1.p12 cred2.p12導致二進制差異)我用下面的命令來創建兩個PKCS12信息文本文件,我在其上執行另一個diff

openssl pkcs12 -info -in cred1.p12 > a.txt 
openssl pkcs12 -info -in cred2.p12 > b.txt 
diff a.txt b.txt 

而唯一的不同之處在於,其中的私有密鑰內容舉行-----BEGIN ENCRYPTED PRIVATE KEY----------END ENCRYPTED PRIVATE KEY-----標籤之間。

在此先感謝!

回答

3

是的,這是預期的行爲。 OpenSSL默認使用DES-EDE3來加密PKCS12文件中的私鑰。每次你加密時,它都會產生一個隨機的initialization vector,這將改變加密的有效載荷。當你在看-info輸出,你會看到這樣的內容:數據後

DEK-Info: DES-EDE3-CBC,558C30D119D6944F 

逗號是十六進制編碼的8字節的鹽。

+0

非常感謝解釋! :d – aspergillusOryzae