Se você apenas deseja ver as SANs, grep DNS:
é a solução óbvia.
Se você quiser ter uma lista mais limpa para processar ainda mais, poderá usar este regex Perl para extrair apenas os nomes: @names=/\sDNS:([^\s,]+)/g
Por exemplo:
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);'
O que produziria isso:
example.com
example.edu
example.net
example.org
www.example.com
www.example.edu
www.example.net
www.example.org
Então você pode canalizar isso para while read name; do echo "processing $name ..."; done
etc.
Ou, para uma lista separada por vírgula em uma linha, substitua join("\n",
porjoin(",",
(A -0777
opção para perl faz com que leia toda a entrada de uma só vez, em vez de linha por linha)
openssl s_client -showcerts -connect www.example.org:443 | openssl x509 -text