为什么我们需要pfx(密钥交换)文件?

时间:2009-03-21 11:42:01

标签: certificate pki

如果我们使私钥可以导出(在makecert中使用-pe选项),那么理论上我们有一个可导出的私钥和公钥(证书中的公钥) - 可以转移或导入到另一台机器

所以,我的问题是,为什么我们仍然需要创建.pfx文件(密钥交换文件,其中包含私钥和公钥) - 使证书中可导出的私钥可以做我们想要的任何事情?任何情况下pfx文件都可以涵盖哪些使证书中可导出的私钥无法实现?

提前谢谢, 乔治

4 个答案:

答案 0 :(得分:4)

是否有您发现的makecert命令行会生成包含私钥的证书文件?我从来没有。我看到有人提到这样一个事实,即有一个版本的makecert可以生成.pfx文件,但也从未见过。

这意味着如果你想要一个私钥文件,你可以用makecert创建两个文件。一个用于证书,一个用于私钥。您可以将这两个文件复制到另一台计算机,然后使用makecert导入它们。

.pfx证书格式的优点是您可以将两个文件与证书和私钥合并为一个。这样更方便,也意味着您可以使用带有.Net X509Certificate2类的文件与SslStream一起使用。

答案 1 :(得分:3)

您的pfx文件可以受密码保护,这会增加一层保护

答案 2 :(得分:2)

问题是,X509 Certificate standard(证书)不包含私钥。证书包含主题公钥信息(也称为公钥)和有关私钥持有者的信息,但标准不支持包含私钥。这是PKI的基本思想 - 证书是您与世界共享的公共信息,私钥是您非常安全地拥有的。

使私有密钥可以在任何机制中导出(例如,makecert),意味着您告诉该产品可以导出密钥。它不指定用于存储它的文件格式。 pfx文件是存储私钥的一种方式 - 它使用PKCS 12 standard。 Java密钥库(* .jks)是另一种做同样事情的方法。大多数商业支持的标准具有类似的共同特征 - 它们通过加密来保护私钥。可以使用密码解锁加密。他们将私钥与描述它的证书结合在一起。

答案 3 :(得分:0)

如果要构建PFX文件,则应该同时具有x509 cert公钥和私钥文件,您可以使用makecert命令生成该文件。可以使用PVk2PFX命令生成PFX,您可以找到Microsoft SDK安装指令。