扩展名 |
.p12, .pfx |
---|---|
互联网媒体类型 |
application/x-pkcs12 |
统一类型标识 | 0 |
开发者 | RSA 安全 |
首次发布 | 1996年 |
最新版本 | PKCS #12 v1.1 2012年10月27日 |
格式类型 | 归档文件格式 |
作为容器 | X.509 公開金鑰認證、X.509 私鑰、X.509 证书吊销列表、通用資料 |
扩展自 | 微軟PFX檔案格式 |
在密码学中,PKCS #12 定义了一种归档文件格式,用于实现存储许多加密对象在一个单独的文件中。通常用它来打包一个私钥及有关的 X.509 证书,或者打包信任链的全部项目。[1]
一个 PKCS #12 文件通常是被加密的,同时单独存在。其被称作「安全包裹」的内部存储容器通常同时也被加密及单独存在。一些安全包裹被预先定义用来存储证书,私钥以及证书吊销列表。根据不同实现者的选择,也可以使用一些安全包裹存储其他任意数据。 [2][3]
PKCS #12 是 RSA 实验室发布的公钥密码学标准之中的一员。
PKCS #12 文件扩展名为 ".p12 "或者 ".pfx"。[4]
这些文件可以通过使用 OpenSSL pkcs12
命令被创建、解析并读出。[5]
PKCS #12 是微软 PFX 文件的替代者;[6] 然而,"PKCS #12 文件" 和 "PFX 文件" 这两个词有时被相互替代使用用。[7]
微软的 "PFX" 因作为最复杂的密码学协议之一而受到大量批评。
完整的PKCS #12标准非常复杂。它使得大量的复杂对象(例如PKCS #12)可以深层次地嵌套。但在实际应用中通常只用来存储一个私钥以及与之有关的证书链。
PKCS #12 文件通常使用 OpenSSL 来创建,OpenSSL只支持在命令行界面使用单个私钥。在Java 8之后,可以使用Java密钥工具创建多个条目,但这很有可能不被其他系统所兼容。
对于PKCS #12来说,一个更简单的替代方案是使用 PEM 格式,它仅仅列出证书,可能还有与之有关的私钥,以Base 64字符串的形式存储于一个纯文本文件中。
也可以使用GnuTLS证书工具(参数 to PSK #11]来创建包含证书、密钥、CA认证证书的PKCS #12文件。然而,要注意与其他软件的可交换性。如果源是通过Base 64处理过的字符串,则输出也同样应该使用Base 64。
This standard specifies a portable format for storing or transporting a user's private keys, certificates, miscellaneous secrets, etc.
All Windows operating systems define the extensions .pfx and .p12 as Personal Information Exchange, or PKCS #12, file types.
The pkcs12 command allows PKCS#12 files (sometimes referred to as PFX files) to be created and parsed.
In 1996 Microsoft introduced a new storage format [...] called PFX (Personal Information Exchange) [...] it was later re-released in a cleaned-up form as PKCS #12