将包含所有证书链的 P7b 文件导出到 CER 文件中

问题描述 投票:0回答:6

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

openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
openssl certificate x509certificate
6个回答
81
投票

-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


12
投票

所选答案对我不起作用,但已经很接近了。我找到了一个适合我的教程以及我从 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


5
投票

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

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

亲自看看。


1
投票

如果将 -chain 添加到命令行,它将导出所有链式证书。

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


1
投票

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

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"}'

0
投票

@Magnus 答案的一个版本,将每个证书保存到单独的文件中,但也剥离标头

openssl pkcs7 -inform DER -in root.p7b -print_certs | awk '/^-+BEG/{n++;s=1}s{print>"root_"n".crt"}/^-+END/{s=0}'
© www.soinside.com 2019 - 2024. All rights reserved.