连续的OpenSSL PKCS12生成产生不同的私钥内容

时间:2013-07-22 22:11:54

标签: encryption openssl certificate private-key pkcs#12

使用相同的密钥和证书文件创建PKCS12(PKCS#12 / p12)文件时,我注意到对OpenSSL的{​​{1}}功能的连续调用会产生不同的pkcs12每次内容(我也使用相同的导入密码和PEM密码)。这应该发生吗?我猜它与不同的IV(初始化向量)或与私钥的对称加密有关的盐有关,但我想确定。

我使用以下命令创建cred1.p12和cred2.p12文件:

ENCRYPTED PRIVATE KEY

当我比较生成的.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 导致二进制差异)时,我使用以下命令创建两个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-----标记之间。

提前致谢!

1 个答案:

答案 0 :(得分:3)

是的,这是预期的行为。 OpenSSL默认使用DES-EDE3加密PKCS12文件中的私钥。每次加密时都会生成一个随机initialization vector,这会改变加密的有效负载。当您查看-info输出时,您将看到如下内容:

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

逗号后的数据是十六进制编码的8字节盐。