Узнайте, что именно написано в сертификате
Этот декодер читает сертификаты X.509 — SSL/TLS-сертификаты любого HTTPS-сайта, а также сертификаты для аутентификации клиентов, подписи кода и S/MIME — и показывает их содержимое: субъект и издателя, даты действия и число дней до истечения, альтернативные имена субъекта, тип и размер открытого ключа, все расширения и отпечатки SHA-1 и SHA-256. Вставьте один или несколько блоков PEM, «голый» Base64 или перетащите файл .crt, .cer, .der, .pem или .p7b. Полная цепочка разбирается сертификат за сертификатом, и каждая подпись проверяется по следующему. Разбор выполняется в вашем браузере; ничего не загружается на сервер.
Как расшифровать сертификат
- 1Вставьте сертификат вместе со строками
-----BEGIN CERTIFICATE-----и-----END CERTIFICATE-----или перетащите файл в поле ввода. - 2Прочитайте сводку: кому выдан сертификат, кто его выдал и действителен ли он сегодня.
- 3Проверьте Subject Alternative Names: браузеры сверяют имя хоста с ними, а не с Common Name.
- 4Скопируйте отпечаток, чтобы сравнить с другой копией, или экспортируйте всё в JSON.
Что содержится в сертификате X.509?
Сертификат связывает открытый ключ с именем и подписан издателем, который ручается за эту связь. Субъект — тот, кому выдан сертификат, а издатель — тот, кто его подписал; оба записываются как отличительные имена, например CN=example.com, O=Example Inc., C=US. Срок действия задаёт первый и последний моменты, когда сертификату можно доверять, а серийный номер однозначно идентифицирует его среди всего, что подписал издатель, — именно он попадает в списки отзыва.
Всё остальное находится в расширениях. Начиная с версии 3 формата, которой следуют все используемые сегодня сертификаты, именно они несут основной смысл: какие имена покрывает сертификат, для чего можно использовать ключ, может ли он подписывать другие сертификаты и где проверить, не отозван ли он.
Важные расширения
- Subject Alternative Name (SAN)
- DNS-имена, IP-адреса, адреса e-mail и URI, для которых действует сертификат. Браузеры игнорируют Common Name и проверяют только этот список; маска вроде <code>*.example.com</code> покрывает один уровень поддоменов.
- Key Usage и Extended Key Usage
- Что может делать ключ: подписывать, шифровать ключи, подписывать сертификаты; и для какой цели, например аутентификация TLS-сервера или подпись кода.
- Basic Constraints
- Является ли сертификат удостоверяющим центром (<code>CA:TRUE</code>), который может подписывать другие сертификаты, и сколько промежуточных уровней может идти за ним (длина пути).
- Authority Information Access и CRL Distribution Points
- Где скачать сертификат издателя, где находится его OCSP-респондер и где лежит его список отозванных сертификатов.
- Certificate Policies
- Какой уровень проверки применил УЦ: проверка домена (DV), организации (OV) или расширенная проверка (EV).
- Signed Certificate Timestamps
- Доказательство того, что сертификат записан в публичные журналы Certificate Transparency; браузеры требуют этого для публично доверенных TLS-сертификатов.
PEM, DER, CRT и CER
DER — двоичная кодировка сертификата (ASN.1 Distinguished Encoding Rules). PEM — те же байты в Base64 между строками -----BEGIN CERTIFICATE-----, чтобы их можно было вставить в текстовый файл или письмо; несколько блоков PEM в одном файле образуют цепочку. Расширения .crt и .cer ничего не говорят о кодировке внутри — встречаются обе, — и этот декодер принимает обе. Файл .p7b — это пакет PKCS#7 с несколькими сертификатами, он тоже открывается.
Для конвертации в командной строке openssl x509 -in cert.der -inform der -out cert.pem превращает DER в PEM, а openssl x509 -in cert.pem -noout -text выводит почти ту же информацию, что и эта страница.
Цепочки, самоподписанные сертификаты и отпечатки
Сервер должен отправлять свой сертификат, а за ним промежуточные, ведущие к доверенному корневому. Когда вы вставляете сюда цепочку, подпись каждого сертификата проверяется открытым ключом следующего, поэтому сразу видно, правильный ли порядок и не пропущено ли звено. Сертификат, у которого субъект и издатель совпадают, а подпись проверяется его же ключом, является самоподписанным: это либо корневой УЦ, либо сертификат для тестов.
Отпечаток — это хеш всего сертификата. Отпечатки SHA-256 — стандартный способ закрепить (pinning) или сравнить сертификаты; отпечатки SHA-1 всё ещё показывают старые инструменты, например просмотрщик сертификатов Windows. Хеш SPKI SHA-256 покрывает только открытый ключ и не меняется при продлении сертификата с тем же ключом. Чтобы создать пару ключей для нового сертификата, воспользуйтесь генератором пар ключей.
Часто задаваемые вопросы
- Как узнать, когда истекает SSL-сертификат?
- Вставьте сертификат и посмотрите раздел «Срок действия»: дата «Не после» — момент истечения, а значок показывает, сколько дней осталось. Чтобы получить сертификат сайта, откройте его в просмотрщике сертификатов браузера и экспортируйте или выполните openssl s_client -connect example.com:443 -showcerts.
- Чем PEM отличается от DER?
- Они содержат один и тот же сертификат. DER — двоичный формат; PEM — эти же данные в Base64 со строками BEGIN и END. Инструмент читает оба.
- Почему браузер пишет, что имя не совпадает?
- Имя хоста должно быть в расширении Subject Alternative Name. Браузеры больше не смотрят на Common Name, поэтому сертификат, где имя указано только в CN, отклоняется.
- Можно ли расшифровать всю цепочку сертификатов?
- Да. Вставьте все блоки PEM вместе или перетащите пакет .pem или .p7b. Каждый сертификат показывается по порядку, а каждая подпись проверяется ключом следующего сертификата.
- Что значит «самоподписанный»?
- Сертификат подписан собственным ключом, а не отдельным УЦ. Сертификаты корневых УЦ самоподписаны по определению; для сайта самоподписанному сертификату доверяют только там, где его установили вручную.
- Можно ли расшифровать закрытый ключ или CSR?
- Нет. Инструмент читает только сертификаты и сообщит, если вы вставите закрытый ключ, открытый ключ или запрос на подпись сертификата.
- Безопасно ли вставлять сюда мой сертификат?
- Сертификаты публичны — серверы отправляют их каждому посетителю, — и к тому же расшифровка полностью выполняется в вашем браузере. Никогда не вставляйте закрытый ключ ни на какой сайт.