Якщо ви просто хочете побачити SAN, grep DNS:
це очевидне рішення.
Якщо ви хочете мати більш чистий список для подальшої обробки, ви можете скористатися цим Perge-регексом для вилучення лише імен: @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