【问题标题】:Consecutive OpenSSL PKCS12 generation yields different private key content连续的 OpenSSL PKCS12 生成产生不同的私钥内容
【发布时间】:2023-03-19 17:36:01
【问题描述】:

当使用相同的密钥和证书文件创建 PKCS12 (PKCS#12 / p12) 文件时,我注意到对OpenSSLpkcs12 能力的连续调用每次都会产生不同的ENCRYPTED PRIVATE KEY 内容(I' m 也使用相同的导入密码和 PEM 密码)。这应该发生吗?我猜它与不同的 IV(初始化向量)或与私钥对称加密相关的盐有关,但我想确定一下。

我使用以下命令创建 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----- 标签。

提前致谢!

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 非常感谢您的解释! :D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 2014-01-04
    • 2018-10-07
    • 2011-08-21
    • 2017-03-01
    相关资源
    最近更新 更多