【问题标题】:Export P7b file with all the certificate chain into CER file将带有所有证书链的 P7b 文件导出到 CER 文件中
【发布时间】:2011-09-06 21:12:02
【问题描述】:

我有 Thwate 提供的 p7b 文件。当我尝试使用以下命令导出 cer 文件中的证书时,不包括证书链。
请建议如何做同样的事情。导入 weblogic 密钥库需要此 CER。

openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer

【问题讨论】:

    标签: openssl certificate x509certificate


    【解决方案1】:

    如果您将 -chain 添加到命令行,它将导出任何链接的证书。

    http://www.openssl.org/docs/apps/pkcs12.html

    【讨论】:

    • 问题是询问 PKCS7 文件,而不是 PKCS12 文件。
    【解决方案2】:

    唯一的问题是结果文件中的任何其他证书都不会被识别,因为工具不希望每个 PEM/DER 编码文件有多个证书。 甚至 openssl 本身。 试试

    openssl x509 -outform DER -in certificate.cer | openssl x509 -inform DER -outform PEM
    

    自己看看吧。

    【讨论】:

    • 中间证书的串联列表对于使用 SSLCACertificateFile 配置参数执行 X.509 客户端身份验证的 Apache httpd Web 服务器很有用。从 apache httpd-ssl.conf 文件:设置 CA 证书验证路径,在哪里可以找到用于客户端身份验证的 CA 证书,或者一个包含所有这些证书的大文件(文件必须是 PEM 编码)
    【解决方案3】:

    -print_certs 是用于列出 p7b 文件中所有证书的选项,您可能需要指定正在读取的 p7b 文件的格式。

    然后您可以将输出重定向到一个新文件以构建证书的串联列表。

    在文本编辑器中打开文件,您将看到 Base64 (PEM) 或二进制数据 (DER)。

    openssl pkcs7 -inform DER -outform PEM -in certificate.p7b -print_certs > certificate_bundle.cer
    

    http://www.openssl.org/docs/apps/pkcs7.html

    【讨论】:

    • 只是为了澄清如何判断 p7b 文件的格式,当您在文本编辑器中打开文件时,如果您看到“-----BEGIN CERTIFICATE-----”和“ -----END CERTIFICATE-----" 字符串中嵌入了乱码,很可能是 Base64 (PEM) 格式。否则,如果它是 100% 乱码,它很可能是二进制 (DER) 格式。我从这个链接得到这个信息:knowledge.digicert.com/solution/SO26449.html
    • 我不得不使用 openssl pkcs7 -outform PEM -in user.anaplanfrsysdev.p7b -print_certs 从 .p7b 文件中提取 2 个证书。
    • openssl pkcs7 -inform DER -outform PEM -in certificate.p7b -print_certs -out certificat_bundle.cer 也应该工作。它使用 openssl 本身的选项。
    【解决方案4】:

    我在从文件中提取证书时遇到了类似的问题。这可能不是最好的方法,但它对我有用。

    openssl pkcs7 -inform DER -print_certs -in <path of the file> | awk 'split_after==1{n++;split_after=0} /-----END CERTIFICATE-----/ {split_after=1} {print > "cert" n ".pem"}'
    

    【讨论】:

      【解决方案5】:

      所选答案对我不起作用,但很接近。我找到了一个对我有用的教程以及我从 StartCom 获得的证书。

      1. 在文本编辑器中打开 .p7b。
      2. 更改前导和尾随,使文件看起来像这样:

        -----BEGIN PKCS7-----
        [... certificate content here ...]
        -----END PKCS7-----
        

      例如,我的 StartCom 证书以:

          -----BEGIN CERTIFICATE----- 
      

      并以:

      结尾
          -----END CERTIFICATE----- 
      
      1. 保存并关闭 .p7b。
      2. 运行以下 OpenSSL 命令(在撰写本文时适用于 Ubuntu 14.04.4):

        openssl pkcs7 -print_certs –in pkcs7.p7b -out pem.cer
        

      输出是带有证书链的 .cer。

      参考:http://www.freetutorialssubmit.com/extract-certificates-from-P7B/2206

      【讨论】:

      • 必须这样做才能使keytool 识别证书。非常感谢!
      猜你喜欢
      • 2021-01-31
      • 1970-01-01
      • 2021-11-26
      • 2019-08-30
      • 2014-06-05
      • 1970-01-01
      • 1970-01-01
      • 2010-09-27
      • 1970-01-01
      相关资源
      最近更新 更多