Лістинг доменів у сертифікаті UCC / SAN SSL


15

Чи є спосіб перерахувати всі домени сертифіката SSL SAN / UCC (в ідеалі за допомогою командного рядка на 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 і sed такopenssl x509 -text < $CRT | grep 'DNS:' | sed 's/\s*DNS:\([a-z0-9.\-]*\)[,\s]\?/\1 /g'
Джеффрі

Прокрутіть вниз: відповідь panticz.de краще ;-)
lucaferrario

10

Ви можете перелічити домени за допомогою цієї команди (протестовано на Linux):

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

Це дає кращий результат, ніж прийнята відповідь.
VaTo

Так, натомість це має бути прийнята відповідь.
Кал

1

Якщо ви просто хочете побачити 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 змушує читати весь вхід одразу замість рядка за рядком)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.