UCC / SAN SSL 인증서에 도메인 나열


15

SAN / UCC SSL 인증서의 모든 도메인을 나열하는 방법이 있습니까 (이상적으로는 linux / os x에서 명령 행 사용)?

브라우저가 데이터를 추출 할 수 있기 때문에 데이터를 추출 할 수있는 방법이 있어야합니다. 불행히도 목록을 볼 수는 있지만 잘라내어 붙여 넣을 수는 없습니다.

답변:


25

openssl x509 -text < foo.crt 트릭을해야합니다.


3
후손을 위해, 이것은 내가 다른 서버를 위해 그것을하고 있었기 때문에 내가 사용한 전체 명령입니다.openssl s_client -showcerts -connect www.example.org:443 | openssl x509 -text
Jordan Reiter

3
깨끗한 공간으로 구분 된 도메인 목록을 얻으려면 grep을 통해 전달할 수 있습니다.openssl x509 -text < $CRT | grep 'DNS:' | sed 's/\s*DNS:\([a-z0-9.\-]*\)[,\s]\?/\1 /g'
Geoffrey

아래로 스크롤하십시오 panticz.de의 대답은 더 나은 ;-)입니다
lucaferrario

10

이 명령으로 도메인을 나열 할 수 있습니다 (linux에서 테스트 됨).

cat cert.pem | openssl x509 -text | grep DNS

이것은 허용 된 답변보다 더 나은 결과를 제공합니다.
VaTo

그렇습니다. 대신 허용되는 대답이어야합니다.
Kal

1

방금하려면 참조 SAN을, grep DNS:확실한 솔루션입니다.

더 처리하기 위해 더 깨끗한 목록을 원한다면이 Perl 정규식을 사용하여 이름 만 추출하면됩니다. @names=/\sDNS:([^\s,]+)/g

예를 들면 다음과 같습니다.

true | openssl s_client -connect example.com:443 2>/dev/null \
| openssl x509 -noout -text \
| perl -l -0777 -ne '@names=/\bDNS:([^\s,]+)/g; print join("\n", sort @names);'

이것은 이것을 출력 할 것입니다 :

example.com
example.edu
example.net
example.org
www.example.com
www.example.edu
www.example.net
www.example.org

그래서 당신은 그것을 while read name; do echo "processing $name ..."; done등으로 파이프 할 수 있습니다

또는 한 줄에 쉼표로 구분 된 목록에 대한 교체 join("\n",와 함께join(",",

( -0777perl 스위치는 한 줄씩 전체 입력을 한 번에 읽을 수있게합니다)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.