我有X.509格式的证书。使用openssl我想将发行者的证书提取到一个文件中,也是X.509格式(这样我就可以在我的网络服务中将发行者列入白名单。)
我该怎么做?以下命令不起作用,它只以文本形式打印发行者信息。
openssl x509 -in cert.x509 -issuer -out issuer.x509
答案 0 :(得分:10)
openssl x509 -in cert.x509 -text
查找签名证书的网址。curl (url) >signer.der
将签名证书下载到文件(在我的情况下为DER格式)。openssl x509 -inform der -in signer.der -out signer.pem
将签名证书转换为PEM(X.509)格式。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