Сертифікат перевіряють трьома способами: у браузері, командою openssl і зовнішнім сервісом перевірки — кожен спосіб відповідає на своє питання і жоден не замінює інші повністю.
Що взагалі потрібно перевірити
За словом «перевірити сертифікат» насправді стоїть декілька різних питань, і відповідь на кожне важлива по-своєму.
| Критерій | Чим загрожує невідповідність |
|---|---|
| Строк дії | Браузер і застосунки показують помилку, сайт вважається небезпечним |
| Ім'я в сертифікаті | Попередження про невідповідність домену, навіть якщо сертифікат дійсний |
| Ланцюжок до кореня | Частина пристроїв і бібліотек не знаходить проміжний центр і відмовляє |
| Алгоритм підпису | Застарілий алгоритм блокується сучасними браузерами і клієнтами |
| Відкликання сертифіката | Відкликаний сертифікат має вважатися недійсним, але не всі клієнти це перевіряють |
У браузері
Браузер показує сертифікат через значок замка біля адреси — звідти видно строк дії, ім'я сайту і центр, що видав сертифікат.
Браузер не показує повний ланцюжок, який насправді отримує сервер під час встановлення з'єднання, і не завжди повідомляє про застарілий алгоритм підпису — він довіряє вже побудованому операційною системою ланцюжку, а не перевіряє його заново з нуля.
Командою openssl
Для перевірки сертифіката на живому сервері підключаються напряму до порту і дивляться, що сервер надсилає у відповідь.
openssl s_client -connect example.com:443 -servername example.com # перевірка сертифіката на сервері по мережі
Для перевірки вже збереженого файлу сертифіката читають його вміст без підключення до сервера.
openssl x509 -in certificate.crt -noout -dates # перевірка строку дії в локальному файлі
Неповний ланцюжок — найчастіша поломка
Браузер на комп'ютері пам'ятає проміжні сертифікати з минулих відвідувань і добудовує ланцюжок сам, тому помилки не видно. Телефон, curl і строгі клієнти нічого не пам'ятають і вимагають, щоб сервер надіслав увесь ланцюжок цілком — звідси різниця в поведінці в одного й того самого сайту.
Побачити проблему можна тією самою командою openssl: якщо у відповіді сервера бракує проміжного сертифіката, це одразу помітно у виводі ланцюжка.
Строк і автопродовження
Автоматичне продовження знімає більшу частину турбот, але не є гарантією: воно мовчки не спрацьовує, якщо закритий порт, за яким центр сертифікації перевіряє володіння доменом, змінився вебсервер чи обробник продовження, або домен переїхав на інші сервери імен.
Детальніше про підключення і випуск сертифіката — у статті як увімкнути SSL.
Симптом, причина і спосіб перевірки
Зібрана таблиця допомагає швидко зіставити те, що бачить користувач, з тим, що шукати на сервері.
| Симптом | Ймовірна причина | Чим перевірити |
|---|---|---|
| У браузері все добре, а curl або застосунок показують помилку | Неповний ланцюжок сертифікатів | Команда openssl s_client або зовнішній сервіс перевірки ланцюжка |
| Сертифікат стосується іншого імені | Не оновили сертифікат після зміни домену чи піддомену | Поля імені сайту в самому сертифікаті |
| Автопродовження не спрацювало | Закритий порт перевірки або змінився вебсервер | Журнал центру сертифікації і дата наступної спроби |
| Попередження про самопідписаний сертифікат | Сертифікат не видано довіреним центром | Поле видавця сертифіката |
| Помилка прострочення на частині пристроїв, а не всюди | Різний перелік довірених кореневих центрів на старих системах | Дата завершення строку дії і перелік кореневих центрів |
Часті питання
Як дізнатися, коли закінчується строк дії сертифіката?
Строк дії видно в браузері поруч з адресою сайту або командою openssl, яка показує дату початку і закінчення дії сертифіката. Зовнішні сервіси перевірки додатково надсилають нагадування заздалегідь, що зручно, якщо за сертифікатом ніхто не стежить вручну.
Чому сайт відкривається в браузері, але лається в застосунку?
Найчастіше причина в неповному ланцюжку сертифікатів: браузер добудовує відсутню ланку сам, спираючись на пам'ять операційної системи, а строгий клієнт на кшталт curl чи мобільного застосунку чекає повний ланцюжок від самого сервера і відмовляє, якщо він надісланий не цілком.
Що таке перевірка сертифіката?
Це звірка декількох незалежних ознак: чи не закінчився строк дії, чи збігається ім'я сайту з іменем у сертифікаті, чи вибудовується ланцюжок до довіреного кореня і чи не відкликаний сертифікат. Браузер, команда openssl і зовнішній сервіс перевіряють різні частини цього набору.
Чи потрібно щось робити при продовженні?
При автоматичному продовженні зазвичай нічого, але варто періодично перевіряти, що воно справді відбувається, а не мовчить через закритий порт чи змінений вебсервер. Ручний випуск вимагає окремо встановити новий сертифікат на сервер після отримання.
Висновок
Для разового контролю достатньо браузера, для діагностики скарг користувачів — команди openssl, а для постійного спостереження — зовнішній сервіс зі сповіщеннями. Що означають різні типи сертифікатів при випуску — у статті типи SSL-сертифікатів.