跳到主要内容
ecdsa.com

PKCS #12(PFX)

RFC 7292 定义的受密码保护的归档格式,通常保存为 .p12 或 .pfx 文件,把私钥与其证书链打包在一起,以便导入浏览器、Windows、macOS、Java 和 Android。
其他写法PFXP12.p12.pfxPKCS#12

PKCS #12 文件是一个 PFX 结构:经过认证的安全内容中装有若干安全包(keyBag、pkcs8ShroudedKeyBag、certBag、crlBag、secretBag),这些安全包带有友好名称和本地密钥 ID,此外还有一个从密码派生的完整性 MAC。RFC 9579(2024年)新增了 PBMAC1,用 PBKDF2 取代了旧的 PKCS #12 专用 MAC 密钥派生方式。

兼容性取决于默认算法。OpenSSL 3.6.5 的 pkcs12 -export 对证书和密钥都使用 AES-256-CBC 加 PBKDF2(2,048 次迭代),MAC 采用 HMAC-SHA-256;加上 -legacy 时,证书用 RC2-40、密钥用 3DES、MAC 用 HMAC-SHA-1,较旧版本的 Windows、macOS 和 Java 需要这种组合。从 JDK 9 起,Java 的默认密钥库类型就是 PKCS #12。

“mac verify failure”之类的错误通常意味着密码错误;“unsupported algorithm RC2-40-CBC”则表示在未加载 OpenSSL legacy 提供程序的情况下打开了旧格式文件。PFX 查看器可以在本地列出安全包和算法,而无需导出密钥。

标准与参考资料

全部术语