【发布时间】:2021-03-04 04:02:26
【问题描述】:
我有一个 X.509 格式的证书。使用 openssl 我想将颁发者的证书提取到一个文件中,也是 X.509 格式(这样我就可以在我的 Web 服务中将颁发者列入白名单)。
我该怎么做?以下命令不起作用,它只是以文本形式打印发行者信息。
openssl x509 -in cert.x509 -issuer -out issuer.x509
【问题讨论】:
标签: openssl
我有一个 X.509 格式的证书。使用 openssl 我想将颁发者的证书提取到一个文件中,也是 X.509 格式(这样我就可以在我的 Web 服务中将颁发者列入白名单)。
我该怎么做?以下命令不起作用,它只是以文本形式打印发行者信息。
openssl x509 -in cert.x509 -issuer -out issuer.x509
【问题讨论】:
标签: openssl
openssl x509 -in cert.x509 -text 找到签名证书的 URL。curl (url) >signer.der 将签名证书下载到文件(在我的例子中为 DER 格式)。openssl x509 -inform der -in signer.der -out signer.pem 将签名证书转换为 PEM (X.509) 格式。openssl x509 -in signer.pem -text 确认您的结果。根据需要重复整个证书链上的过程。【讨论】:
可接受的答案是正确的,但我可以进一步详细说明。
证书通常有一个 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
【讨论】: