使用 openssl 或其他指令查看 PEM 憑證檔案(完整憑證鏈)中的所有憑證

使用 openssl 或其他指令查看 PEM 憑證檔案(完整憑證鏈)中的所有憑證

通常,證書文件(PEM)格式包含多個證書,例如:

-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
.....
-----END CERTIFICATE-----

使用命令: openssl x509 -in cert.pem -noout -text我可以看到第一個條目。

是否有任何內建方法可以顯示第二個條目或所有條目。

有沒有簡單的方法可以查看所有條目?

我真正感興趣的是:C,ST,O,OU,CN,主題,發行者和主題的有效期

答案1

貼文 如何查看捆綁包中的所有 ssl 憑證? 提出了幾種可能性:

openssl crl2pkcs7 -nocrl -certfile CHAINED.pem | openssl pkcs7 -print_certs -text -noout
openssl crl2pkcs7 -nocrl -certfile CHAINED.pem | openssl pkcs7 -print_certs -noout (gives shorter output)
keytool -printcert -v -file <certs.crt>

這篇文章包含使用 Perl、bash、awk 和其他實用程式時的更多變更。

答案2

我建議使用非 OpenSSL 工具:另一個流行的 TLS 堆疊 GnuTLS 有一個類似的certtool程序,可以以相同的格式產生輸出。

certtool -i < multiplecerts.pem

(它們在一些小細節上確實有所不同,例如不太常見的憑證擴充的解碼。)

答案3

我知道這是舊的,但我在這裡找到了從包含相當多註解行的 pem 格式的憑證鏈中獲取主題、有效日期和頒發者的方法。

因此,在執行 bash 4.2.46 的 RHEL7 上,這是我在廣泛閱讀 GNU.org 上的 sed 文件後確定的解決方案:sed 多行技術

for CULPRIT in $(sed -n '/^-----BEGIN.*CERTIFICATE-----/{n;p}' CHAIN-FILE-NAME); do
VICTIM="$(printf "${CULPRIT}" | sed -e 's,\/,\\\/,g')"
sed -e '/./{H;$!d;}' -e 'x;/'"${VICTIM}"'/!d' CHAIN-FILE-NAME | openssl x509 -subject -dates -issuer -noout
done

相關內容