【问题标题】:convert pfx format to p12将 pfx 格式转换为 p12
【发布时间】:2011-10-12 17:48:31
【问题描述】:

我需要将.pfx 格式证书(来自 windows mmc)导出到 .p12 以在另一个应用程序中使用。我找不到办法做到这一点。谁能推荐一个方法?

【问题讨论】:

    标签: certificate ssl-certificate


    【解决方案1】:

    .p12.pfx 都是 PKCS #12 文件。我错过了什么吗?

    您是否尝试将导出的 .pfx 文件重命名为具有 .p12 扩展名?

    【讨论】:

    • 让你想知道为什么它们是两个不同的文件扩展名,如果它们在引擎盖下真的是同一个东西。
    • 有两个文件扩展名的原因是历史原因。 PFX 是 Microsoft 的扩展,而 P12 是 Netscape 的扩展。两种格式现在都已调整为相同,这意味着开发人员可以使用 .NET System.Security.Cryptography.X509Certificates 命名空间来处理这两种格式。请参阅here 了解更多信息。
    • PKCS #12 文件的文件扩展名是“.p12”或“.pfx”。微软的“PFX”因为是最复杂的加密协议之一而受到严厉批评。 PKCS #12 是微软“PFX”的继任者。 PKCS #12 是 RSA 实验室发布的称为公钥加密标准 (PKCS) 的标准系列之一。
    • 重命名并不总是有效,因为。例如,如果您使用 SoapUI 并对其进行 2 路身份验证,则它会失败。 p12 和 pfx 的历史可以追溯到 Netscape 和 IE。它们几乎是相同但不相同的文件。所以一些应用程序可以理解这两种扩展,而其他应用程序需要 100% 兼容的有效 p12,例如 SoapUI
    • 这在我们的案例中根本不起作用。尽管它们都应该是 PCKS12 文件,但重命名不起作用,我还没有加载十六进制编辑器来查看为什么不起作用。
    【解决方案2】:

    我在使用 openconnect 的 .pfx 文件时遇到了问题。重命名并没有解决问题。我使用 keytool 将其转换为 .p12 并且有效。

    keytool -importkeystore -destkeystore new.p12 -deststoretype pkcs12 -srckeystore original.pfx
    

    在我的情况下,新文件 (new.p12) 的密码必须与 .pfx 文件的密码相同。

    【讨论】:

    • 没有用,即使我对两者都使用了相同的密码。收到错误“keytool 错误:java.io.IOException:无效的密钥库格式”
    • 它对我有用,感谢 keytool 的命令
    • 在 TeamCity 中更新我的 SSL 证书时,这是一个很棒的帮助。谢谢。
    • 因为我也必须更改密码,所以我在此命令中添加了选项-destkeypass,它就像一个魅力。
    【解决方案3】:

    如果您正在寻找使用 UI 的快速手动流程。我总是使用 Mozilla Firefox 将 PFX 转换为 P12。首先将证书导入 Firefox 浏览器(选项 > 隐私和安全 > 查看证书... > 导入...)。安装后,通过从证书管理器中选择证书名称执行导出以创建 P12 文件,然后单击备份...并输入文件名,然后输入密码。

    【讨论】:

      【解决方案4】:

      这更像是 jglouie 回应的延续。

      如果您使用 openssl 将 PKCS#12 证书转换为公共/私有 PEM 密钥,则无需重命名文件。假设文件名为 cert.pfx,以下三个命令将创建一个公共 pem 密钥和一个加密的私有 pem 密钥:

      openssl pkcs12 -in cert.pfx     -out cert.pem     -nodes -nokeys
      openssl pkcs12 -in cert.pfx     -out cert_key.pem -nodes -nocerts
      openssl rsa    -in cert_key.pem -out cert_key.pem -des3
      

      前两个命令可能会提示输入导入密码。这将是随 PKCS#12 文件提供的密码。

      第三个命令将让您指定证书的加密密码。这是您在使用证书时将输入的内容。

      【讨论】:

      • 第一个命令会覆盖第二个命令,所以也许只需执行第 2 步和第 3 步。仅供读者参考,Des3 是私钥的默认加密。
      【解决方案5】:

      运行此命令将.cert文件更改为.p12

      openssl pkcs12 -export -out server.p12 -inkey server.key -in server.crt 
      

      其中server.key 是服务器密钥,server.cert 是 CA 颁发证书或自签名证书文件。

      【讨论】:

        【解决方案6】:

        首先我们有证书.PFX 文件

        第一步:(提取私钥)

        openssl pkcs12 -in certificate.pfx -nocerts -out private.key -passin pass:123123 -passout pass:123123
        

        Step2:(创建P12文件)

        openssl pkcs12 -export -out ewallet.p12 -inkey private.key -in certificate.cer -passin pass:123123 -passout pass:123123
        

        【讨论】:

          猜你喜欢
          • 2019-12-09
          • 1970-01-01
          • 1970-01-01
          • 2016-12-29
          • 2011-02-20
          • 2010-09-29
          • 1970-01-01
          • 1970-01-01
          • 2018-05-27
          相关资源
          最近更新 更多