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

관련 정보