【问题标题】:What is the difference between a cer, pvk, and pfx file?cer、pvk 和 pfx 文件有什么区别?
【发布时间】:2011-01-18 13:08:52
【问题描述】:

cer、pvk 和 pfx 文件有什么区别?另外,我应该保留哪些文件,应该将哪些文件提供给我的交易对手?

【问题讨论】:

标签: security public-key


【解决方案1】:

其实我不久前也遇到过这样的事情……check it out over on msdn(见第一个答案)

总结:

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

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

.pfx - 代表个人交换格式。它用于在单个文件中交换公共和私有对象。可以从 .cer 文件创建 pfx 文件。也可以用来创建Software Publisher Certificate

我根据cmets的建议总结了页面上的信息。

【讨论】:

  • 我建议在链接本身之外引用或总结链接的内容。这样,您既可以给予适当的信任,又可以保护我们在下次 MS 重新设计他们的网站时不会丢失信息。
  • 我看过那个链接,但我没有完全回答这个问题。
  • 另外,链接中的一些信息是错误的。例如,您不能从证书中提取私钥。很明显。
  • 对于上面的评论,这不是关于提取的。在 .cer 文件中拥有私钥是没有意义的。 .cer 文件应该与外界共享,因此它只携带公钥。
【解决方案2】:

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

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

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

您永远不应该泄露您的私钥。这些包含在 .pfx 和 .pvk 文件中。

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

【讨论】:

  • PVK 文件不在 PKCS#8 中,它是一种专有格式。见drh-consultancy.demon.co.uk/pvk.html
  • 在 Windows SDK 中查找 pvk2pfx.exe 实用程序
  • @erickson,发明 .pvk 有什么意义? .pfx 还不够吗?
  • @Pacerier 是的,.pfx 就足够了。我不确定 .pvk 的意义是什么;我只能猜测它是在无知中发明的。
【解决方案3】:

在 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。

欲了解更多信息,请访问:Certificate Files: .Cer x .Pvk x .Pfx

【讨论】:

    【解决方案4】:

    以下是我个人的超级精简笔记,就目前与我相关的主题而言,供任何感兴趣的人使用:

    • PKCS12PEM 都可以存储整个证书链:public keys, private keysroot (CA) certs
    • .pfx == .p12 == "PKCS12"
      • 完全加密
    • .pem == .cer == .cert == "PEM" (或者可能不是。 .. 可能是二进制的...见 cmets ...)
      • base-64(字符串)编码X509 cert(二进制)带有页眉和页脚
        • base-64 基本上只是一串“A-Za-z0-9+/”,用于表示 0-63,一次 6 位二进制,按顺序排列,有时后面有 1 或 2 个“=”字符当有剩菜时结束(“=”是“填充/垃圾/忽略/丢弃”字符)
        • 页眉和页脚类似于“-----BEGIN CERTIFICATE-----”和“-----END CERTIFICATE-----”或“-----BEGIN ENCRYPTED PRIVATE KEY -----" 和 "-----END ENCRYPTED PRIVATE KEY-----"
      • Windows 将 .cer 和 .cert 识别为证书文件
    • .jks == "Java Key Store"
      • 只是 API 使用的一种特定于 Java 的文件格式
        • .p12 和 .pfx 文件也可以与 JKS API 一起使用
    • Trust Stores”包含公共的、受信任的、root (CA) certs,而 “Identity/Key Stores”包含私有的身份​​证书;文件方面, 但是,它们是相同的。

    【讨论】:

    • 那么 .pvk 是在哪里定义的?
    • @zwcloud 我给出了我当时所知道的。其他答案给出了这一点。
    • .cer 文件通常是二进制文件,根本没有 base64 编码,如接受的答案中所述。
    • @oligofren 似乎是合法的,尽管那些似乎不是 PEM 的,至少其中一些是二进制的是 .der 的。 ssl.com/guide/…
    猜你喜欢
    • 2015-10-03
    • 2020-05-14
    • 2014-08-14
    • 1970-01-01
    • 2022-12-11
    • 2018-07-05
    • 2011-04-22
    • 2016-08-18
    相关资源
    最近更新 更多