Pack Camo

Декодер сертификатов X.509

Субъект, издатель, срок действия, SAN и отпечатки любого сертификата PEM или DER.

Всё выполняется локально — ничего не отправляется на сервер.

Сертификат

2 сертификата

…

Узнайте, что именно написано в сертификате

Этот декодер читает сертификаты X.509 — SSL/TLS-сертификаты любого HTTPS-сайта, а также сертификаты для аутентификации клиентов, подписи кода и S/MIME — и показывает их содержимое: субъект и издателя, даты действия и число дней до истечения, альтернативные имена субъекта, тип и размер открытого ключа, все расширения и отпечатки SHA-1 и SHA-256. Вставьте один или несколько блоков PEM, «голый» Base64 или перетащите файл .crt, .cer, .der, .pem или .p7b. Полная цепочка разбирается сертификат за сертификатом, и каждая подпись проверяется по следующему. Разбор выполняется в вашем браузере; ничего не загружается на сервер.

Как расшифровать сертификат

  1. 1Вставьте сертификат вместе со строками -----BEGIN CERTIFICATE----- и -----END CERTIFICATE----- или перетащите файл в поле ввода.
  2. 2Прочитайте сводку: кому выдан сертификат, кто его выдал и действителен ли он сегодня.
  3. 3Проверьте Subject Alternative Names: браузеры сверяют имя хоста с ними, а не с Common Name.
  4. 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?
Нет. Инструмент читает только сертификаты и сообщит, если вы вставите закрытый ключ, открытый ключ или запрос на подпись сертификата.
Безопасно ли вставлять сюда мой сертификат?
Сертификаты публичны — серверы отправляют их каждому посетителю, — и к тому же расшифровка полностью выполняется в вашем браузере. Никогда не вставляйте закрытый ключ ни на какой сайт.