
通常,證書文件(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