Openssl 将P7b文件和所有证书链导出到CER文件中

Openssl 将P7b文件和所有证书链导出到CER文件中,openssl,certificate,x509certificate,Openssl,Certificate,X509certificate,我有Thwate提供的p7b文件。当我试图使用下面的命令导出cer文件中的证书时,证书链不包括在内 请建议如何做同样的事情。导入weblogic密钥存储时需要此CER openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer 如果将-chain添加到命令行,它将导出任何链接证书 唯一的问题是,结果文件中的任何其他证书都不会被识别,因为工具不希望每个PEM/DER编码文件有多个证书。 甚至openssl本身。 试一试

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

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

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


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


请自行查看。

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

然后可以将输出重定向到新文件,以构建连接的证书列表

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


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

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"}'
openssl pkcs7-通知DER-print_certs-in|awk'split_after==1{n++;split_after=0}/----结束证书------/{split_after=1}{print>“cert”n.pem}

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

  • 在文本编辑器中打开.p7b
  • 更改引线和尾部,使文件看起来类似于以下内容:

    -----BEGIN PKCS7-----
    [... certificate content here ...]
    -----END PKCS7-----
    
  • 例如,我的StartCom证书开始于:

        -----BEGIN CERTIFICATE----- 
    
    最后是:

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

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


    参考:

    问题是询问PKCS7文件,而不是PKCS12文件。中间证书的串联列表对于使用SSLCACertificateFile配置参数执行X.509客户端身份验证的Apache httpd Web服务器非常有用。从apache httpd-ssl.conf文件:设置CA证书验证路径,在其中查找用于客户端身份验证的CA证书,或者一个包含所有CA证书的大型文件(文件必须是PEM编码的)必须这样做才能使
    keytool
    识别证书。非常感谢你!为了说明如何确定p7b文件的格式,当您在文本编辑器中打开该文件时,如果您看到乱码中嵌入了“----开始证书------”和“----结束证书------”字符串,则可能是Base64(PEM)格式。否则,如果它是100%胡言乱语,它很可能是二进制(DER)格式。我从这个链接得到了这个信息:我必须使用openssl pkcs7-outform PEM-in user.anaplanfrsysdev.p7b-print_certs从.p7b文件中提取2个证书。openssl pkcs7-inform DER-outform PEM-in certificate.p7b-print_certs-out certificate_bundle.cer也可以工作。它使用openssl本身的选项。
        -----BEGIN CERTIFICATE----- 
    
        -----END CERTIFICATE----- 
    
    openssl pkcs7 -print_certs –in pkcs7.p7b -out pem.cer