如何从其他证书中提取颁发者证书

时间:2013-11-20 16:12:40

标签: openssl

我有X.509格式的证书。使用openssl我想将发行者的证书提取到一个文件中,也是X.509格式(这样我就可以在我的网络服务中将发行者列入白名单。)

我该怎么做?以下命令不起作用,它只以文本形式打印发行者信息。

openssl x509 -in cert.x509 -issuer -out issuer.x509

2 个答案:

答案 0 :(得分:10)

  1. openssl x509 -in cert.x509 -text查找签名证书的网址。
  2. curl (url) >signer.der将签名证书下载到文件(在我的情况下为DER格式)。
  3. openssl x509 -inform der -in signer.der -out signer.pem将签名证书转换为PEM(X.509)格式。
  4. openssl x509 -in signer.pem -text确认您的结果。根据需要在证书链中一直重复该过程。

答案 1 :(得分:4)

可接受的答案是正确的,但我可以进一步详细说明。

证书通常有一个 AIA 字段,提供一个 URL,可以在其中下载颁发者证书,并且根据 CA 必须遵循的标准,它们通常也采用 DER 格式。

对于上面的 1.“查找签名证书的 URL”,您可以运行 issuer_url=$(openssl x509 -noout -text -in $filename | grep "Authority Information Access" -A 3 | grep "CA Issuers" | head -1 | tr spaces | sed 's/CA Issuers - URI://g' | sed 's/ //g')

此命令基本上在证书上运行 openssl 并剪掉证书中的 CA Issuer - URI: 链接(假设有一个)并将其放入 issuer_url 变量中。您可以将 $filename 替换为 /path/to/your/pem/certificate。如果您的证书是 DER 格式,则需要在第一个 openssl 命令中包含 -inform DER

完成后,您可以使用 wget 来获取它: wget $issuer_url -O outputfile.crt

这将获取发行者文件。此文件通常为 DER 格式,因此您可以从她那里提供文件或将其转换为 PEM:

openssl x509 -inform DER -in outputfile.crt -out pem_outputfile.crt