如果我们使私钥可以导出(在makecert中使用-pe选项),那么理论上我们有一个可导出的私钥和公钥(证书中的公钥) - 可以转移或导入到另一台机器
所以,我的问题是,为什么我们仍然需要创建.pfx文件(密钥交换文件,其中包含私钥和公钥) - 使证书中可导出的私钥可以做我们想要的任何事情?任何情况下pfx文件都可以涵盖哪些使证书中可导出的私钥无法实现?
提前谢谢, 乔治答案 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安装指令。