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

标签 encryption openssl certificate private-key pkcs#12

当使用相同的 key 和证书文件创建 PKCS12 (PKCS#12/p12) 文件时,我注意到连续调用 OpenSSLpkcs12 功能会产生每次都有不同的 ENCRYPTED PRIVATE KEY 内容(我也使用相同的导入密码和 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----- 保存私钥内容的标签。

提前致谢!

最佳答案

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

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

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

关于encryption - 连续的 OpenSSL PKCS12 生成产生不同的私钥内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17798341/

相关文章:

ssl - 注册机构 (RA) 和验证机构 (VA) 证书

ssl - 供内部使用的 HTTPS 证书

encryption - 使用 ES256 的 JWT 签名无效

Drupal 7 密码哈希

delphi - INDY 10.1.5 - 哪些 SSL dll 可与 Delphi 2006 一起使用?

google-chrome - 如何调试 TLS 实现

java - 认证链只包含一个位置——Java & PKCS11

python - 使用 Python 创建 WPA 消息完整性代码 (MIC)

java加密性能

apache - localhost 子域上的 ssl 证书不起作用