просмотреть все сертификаты в файле сертификатов PEM (полная цепочка сертификатов) с помощью openssl или другой команды

просмотреть все сертификаты в файле сертификатов PEM (полная цепочка сертификатов) с помощью openssl или другой команды

часто файлы сертификатов (в формате 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, которая содержала довольно много закомментированных строк.

Итак, на RHEL7 с bash 4.2.46 я остановился на следующем решении после тщательного изучения документации sed на GNU.org:многострочные методы 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

Связанный контент