cer,pvk和pfx文件之间有什么区别?


Answers:


142

Windows对X.509证书使用.cer扩展名。这些可以是“二进制”(ASN.1 DER)格式,也可以是使用Base-64编码的,并且应用了页眉和页脚(PEM);Windows可以识别。要验证证书的完整性,您必须使用颁发者的公共密钥来检查其签名...,它又是另一个证书。

Windows将.pfx用于PKCS#12文件。该文件可以包含各种加密信息,包括证书,证书链,根权限证书和私钥。可以对其内容进行密码保护(使用密码),以使私钥保持私密并保留根证书的完整性。

Windows使用.pvk作为私钥文件。我不确定这些操作系统遵循什么标准(如果有)。希望它们是PKCS#8编码的密钥。 Emmanuel Bourg报告说,这些是专有格式。一些文档可用。

您绝不应该公开您的私钥。这些包含在.pfx和.pvk文件中。

通常,您只与其他方交换您的证书(.cer)和任何中间发行者的证书(即,您的所有CA的证书,但根CA除外)。


7
PVK文件不在PKCS#8中,它是专有格式。参见drh-consultancy.demon.co.uk/pvk.html
伊曼纽尔·布尔格

在Windows SDK中寻找pvk2pfx.exe实用程序
BozoJoe

@erickson,发明.pvk有什么意义?.pfx不足够吗?
Pacerier '16

@Pacerier是的,.pfx就足够了。我不确定.pvk是什么意思;我只能猜测它是无知发明的。
erickson

55

在Windows平台中,这些文件类型用于证书信息。通常用于SSL证书和公共密钥基础结构(X.509)。

  • CER文件: CER文件用于存储X.509证书。通常用于SSL认证,以验证和识别Web服务器的安全性。该文件包含有关证书所有者和公共密钥的信息。CER文件可以为二进制(ASN.1 DER)格式,也可以使用Base-64编码,并包含页眉和页脚(PEM),Windows会识别这两种布局。
  • PVK文件: 代表私钥。Windows使用PVK文件存储私钥,以在各种Microsoft产品中进行代码签名。PVK是专有格式。
  • PFX文件“ 个人交换格式”是PKCS12文件。它包含各种加密信息,例如证书,根权限证书,证书链和私钥。它使用密码进行密码保护,以使私钥保持私密并保持根证书的完整性。PFX文件还用于各种Microsoft产品,例如IIS。

有关更多信息,请访问:证书文件:.Cer x .Pvk x .Pfx


4
Cer文件:....“文件包含有关证书所有者以及公用和专用证书密钥的信息” ...不正确。正如埃里克森在回答中指出的那样:它仅包含有关公钥的信息。带有私钥和公钥的.cer文件将毫无用处。
thor_hayek

1
错了 .Cer文件不包含任何私钥。请改善您的答案。
ANewGuyInTown

36

就目前与我相关的主题而言,以下是我的个人简介,适合任何感兴趣的人:

  • 无论PKCS12PEM可存储整个证书链:公钥,私钥根(CA)证书
  • .pfx == .p12 ==“ PKCS12
    • 完全加密
  • .pem == .cer == .cert ==“ PEM
    • 具有页眉和页脚的base-64(字符串)编码的X509证书(二进制)
      • base-64基本上只是一个字符串“ A-Za-z0-9 + /”,用于表示0-63,一次按顺序表示6位二进制,有时在最前面带有1或2个“ =”字符当有剩菜剩饭时结束(“ =”是“填充物/垃圾/忽略/扔掉”字符)
      • 页眉和页脚类似于“ ----- BEGIN CERTIFICATE -----”和“ ----- END CERTIFICATE -----”或“ ----- BEGIN Encrypted PRIVATE KEY-- -“和” -----结束加密的私钥-----“
    • Windows将.cer和.cert识别为证书文件
  • .jks ==“ Java密钥库
    • 只是API使用的特定于Java的文件格式
      • .p12和.pfx文件也可以与JKS API一起使用
  • 信任库 ”包含公共的,受信任的根(CA)证书,而“ 身份/密钥库 ”则包含私有的,身份证书;在文件方面,它们是相同的。

那么.pvk在哪里定义?
zwcloud

@zwcloud我给出了当时的知识。其他答案给出了。
安德鲁

18

实际上,我不久前就遇到了类似的问题…… 在msdn上进行检查 (请参阅第一个答案)

综上所述:

.cer-以X.509标准格式存储的证书。该证书包含有关证书所有者的信息...以及公共和私有密钥。

.pvk-文件用于存储私钥以进行代码签名。您还可以基于.pvk私钥文件创建证书。

.pfx-代表个人交换格式。它用于在单个文件中交换公共和私有对象。可以从.cer文件创建pfx文件。也可以用于创建软件发布者证书

我根据评论的建议总结了页面中的信息。


2
除了链接本身,我建议引用或总结链接的内容。这样,您既可以给予应有的荣誉,又可以保护我们在下次MS重新设计其站点时不会丢失信息。
乔纳森·艾伦

我已经看到了该链接,但是我没有完全回答问题。
乔纳森·艾伦

15
另外,链接中的某些信息是错误的。例如,您不能从证书中提取私钥。明显。
埃里克森

对于上面的评论,它与提取无关。在.cer文件中具有私钥只是没有意义。.cer文件应该与外界共享,因此它仅包含公共密钥。
拉吉夫
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.