답변:
openssl x509 -text < foo.crt
트릭을해야합니다.
openssl x509 -text < $CRT | grep 'DNS:' | sed 's/\s*DNS:\([a-z0-9.\-]*\)[,\s]\?/\1 /g'
방금하려면 참조 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(",",
( -0777
perl 스위치는 한 줄씩 전체 입력을 한 번에 읽을 수있게합니다)
openssl s_client -showcerts -connect www.example.org:443 | openssl x509 -text