Дізнайтеся, що саме міститься в сертифікаті
Цей декодер читає сертифікати 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?
Сертифікат пов'язує публічний ключ із ім'ям і підписаний видавцем, який поручається за цей зв'язок. Суб'єкт — це той, кому видано сертифікат, а видавець — той, хто його підписав; обидва записуються як відмітні імена (DN), наприклад 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
- Який рівень перевірки застосував CA: перевірка домену (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 виводить приблизно ту саму інформацію, що й ця сторінка.
Ланцюжки, самопідписані сертифікати та відбитки
Сервер повинен надсилати власний сертифікат, а за ним проміжні сертифікати, що ведуть до довіреного кореневого. Коли ви вставляєте сюди ланцюжок, підпис кожного сертифіката перевіряється публічним ключем наступного, тож ви одразу бачите правильність порядку та відсутність пропущених ланок. Сертифікат, у якого суб'єкт і видавець збігаються, а підпис перевіряється власним ключем, є самопідписаним: це або кореневий CA, або тестовий сертифікат.
Відбиток — це хеш усього сертифіката. Відбитки 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. Кожен сертифікат показується по черзі, а кожен підпис перевіряється ключем наступного сертифіката.
- Що означає самопідписаний сертифікат?
- Сертифікат було підписано власним ключем, а не окремим CA. Сертифікати кореневих CA є самопідписаними за замовчуванням; для вебсайту самопідписаний сертифікат є довіреним лише там, де його встановлено вручну.
- Чи може цей інструмент розшифрувати приватний ключ або CSR?
- Ні. Він читає лише сертифікати та повідомить вас, якщо замість цього буде вставлено приватний ключ, публічний ключ чи запит на підпис сертифіката (CSR).
- Чи безпечно вставляти свій сертифікат сюди?
- Сертифікати є публічними — сервери надсилають їх кожному відвідувачу — і декодування відбувається повністю у вашому браузері. Ніколи не вставляйте приватні ключі на жодні вебсайти.