Парсер SSL-сертификатов

Вставьте PEM-сертификат и прочитайте его как таблицу: издатель, субъект, покрываемые имена, окно действия, отпечаток — всё разбирается прямо в вашем браузере. Необязательный запрос к crt.sh показывает историю Certificate Transparency того же домена. Чтобы узнать, что сервер предъявляет прямо сейчас, воспользуйтесь вместо этого проверкой SSL.

Разобрать сертификат

История Certificate Transparency (необязательно)

Ищите на crt.sh каждый публично зарегистрированный сертификат, когда-либо выпущенный для домена. Это история, а не живая проверка: она показывает, что было выпущено, включая сертификаты, которых вы можете не узнать. Если crt.sh недоступен из этого браузера, этот раздел честно об этом сообщает, а парсер выше не затрагивается.

Как читать сертификат

Сертификат связывает три вещи: открытый ключ, список имён и окно действия — всё это подписано издателем. Субъект говорит, кому сертификат был выпущен; издатель говорит, какой орган его подписал, — именно там живут продления, когда вы наследуете инфраструктуру. Серийный номер — это уникальный идентификатор издателя для этого сертификата, полезный, когда орган отзывает один сертификат, не трогая его собратьев. Алгоритм подписи говорит, как была сделана подпись издателя; всё, что до сих пор работает на MD5 или SHA-1, давно прошло дату своего вывода из эксплуатации и должно быть заменено независимо от даты окончания.

Окно действия — это часть со сроком, и эта страница превращает его в счётчик оставшихся дней с той же расцветкой, что и у живой проверки: спокойно за пределами девяноста дней, янтарно внутри девяноста, красно внутри тридцати и откровенно просрочено за нулём. Список покрываемых имён — это то, что браузеры проверяют на самом деле: общее имя — унаследованное украшение, а отсутствующее имя в этом списке — самая частая причина предупреждения браузера на в остальном здоровом сайте. Отпечаток SHA-256 — компактный идентификатор точных байтов сертификата: два сертификата с одинаковым отпечатком — это один и тот же сертификат, что делает его надёжным способом сравнить то, что у вас есть, с тем, что утверждает журнал, поставщик или коллега.

Парсер против живой проверки против журнала прозрачности

Три разных вопроса, три разных инструмента, и их смешение вызывает настоящую путаницу. «Что содержит этот файл?» — это парсер на этой странице: офлайн, точно, ограничено файлом, который у вас есть. «Что сервер предъявляет прямо сейчас?» — это проверка SSL, которая выполняет настоящий TLS-рукопожатие и потому может не соглашаться с файлом: обновлённый сертификат на диске ничего не значит, пока сервер не перезагружен. «Что когда-либо выпускалось для этого домена?» — это поиск crt.sh, который читает публичные журналы Certificate Transparency и может вытащить на свет забытые или несанкционированные выпуски, которых ни один из двух других не показал бы. Используйте парсер, чтобы прочитать файл, проверку — чтобы проверить развёртывание, а поиск по журналам — чтобы аудитировать историю, и когда проверка и файл расходятся, верьте проверке. Четвёртый вопрос принадлежит другому инструменту: подходят ли несколько файлов друг к другу — какой закрытый ключ соответствует этому сертификату и в каком порядке следует предъявлять цепочку — это сопоставитель сертификатов и ключей, который группирует сертификаты, ключи и CSR по их общему открытому ключу.

Разбор сертификатов использует node-forge по лицензии BSD-3-Clause. Онлайн-запросы отправляют введённый вами домен на crt.sh; сам PEM-парсер не делает никаких сетевых запросов.

Частые вопросы

Чем это отличается от проверки SSL?

Проверка SSL выполняет живое TLS-рукопожатие с сервером и сообщает сертификат, который сервер действительно предъявляет прямо сейчас. Эта страница разбирает текст сертификата, который вы вставляете, — полезно, когда у вас есть файл сертификата, рабочий процесс CSR или сертификат из системы, до которой отсюда не добраться. Если вы можете добраться до сайта, используйте проверку SSL; если у вас только файл, используйте эту страницу.

Что добавляет crt.sh?

crt.sh ищет в публичных журналах Certificate Transparency: каждый публично доверенный сертификат, когда-либо выпущенный для домена, с издателем и датами действия. Он отвечает на вопрос «что было выпущено» — включая сертификаты, которых вы не ожидали. Он не может сказать, что сервер предъявляет сегодня; это может только живое рукопожатие.

Почему запрос к crt.sh может не удаться?

crt.sh — бесплатный сторонний сервис, и сможет ли браузер прочитать его ответы, зависит от его заголовков cross-origin. Если здесь он не сработает, страница честно об этом скажет, а PEM-парсер выше продолжит работать — онлайн-запрос является дополнением, а не самим инструментом.

Что SAN говорят мне такого, чего не говорит общее имя?

Современные браузеры игнорируют общее имя и вместо этого проверяют список альтернативных имён субъекта. Сертификат действителен ровно для имён из этого списка: голый домен без www или забытый поддомен — самая частая причина предупреждения браузера на в остальном здоровом сайте.

Утекает ли что-нибудь при вставке сертификата?

Сертификат по замыслу является публичным документом — он не содержит закрытого ключа и ничего секретного. Закрытый ключ — это отдельный файл, и его никогда нельзя вставлять куда бы то ни было. Разбор здесь в любом случае происходит полностью в вашем браузере.