raatools/

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

Перевірте деталі SSL/TLS-сертифіката для будь-якого домену.

Що таке перевірщик SSL-сертифікатів?

SSL (Secure Sockets Layer) та його наступник TLS (Transport Layer Security) шифрують з'єднання між браузером та сервером, захищаючи дані в дорозі від перехоплення та підробки. SSL-сертифікат підтверджує, що сайт є тим, за кого себе видає. Цей інструмент перевіряє, чи є SSL-сертифікат домену дійсним, правильно налаштованим і не простроченим.

Коли ви відвідуєте сайт через HTTPS, ваш браузер перевіряє SSL-сертифікат перед встановленням зашифрованого з'єднання. Якщо сертифікат прострочений, виданий для іншого домену або підписаний ненадійним центром сертифікації, браузер відображає попередження безпеки. Цей інструмент виконує ті самі перевірки та надає детальну інформацію про сертифікат.

Чому HTTPS та TLS мають значення

TLS (Transport Layer Security) забезпечує три критично важливі гарантії для кожного HTTPS-з'єднання. По-перше, шифрування: всі дані, що передаються між браузером і сервером, зашифровані, тому той, хто перехопить трафік — наприклад, у мережі Wi-Fi кав'ярні — побачить лише набір незрозумілих байтів. По-друге, цілісність: TLS використовує коди автентифікації повідомлень (MAC) для виявлення підміни даних під час передачі, гарантуючи, що ні запит, ні відповідь не були змінені. По-третє, автентичність: сертифікат дозволяє браузеру переконатися, що він спілкується з реальним сервером, а не з самозванцем, який здійснює атаку типу «людина посередині».

Окрім безпеки, HTTPS став сигналом ранжування для Google Search та передумовою для сучасних функцій браузера, таких як Service Workers, геолокація та доступ до камери. Браузери на зразок Chrome та Firefox позначають HTTP-сторінки як «Небезпечні», що підриває довіру користувачів і збільшує показник відмов. Сайти без дійсного сертифіката також можуть потрапляти до списків блокування систем аналізу загроз, що використовуються корпоративними брандмауерами, відрізаючи цілі аудиторії.

Що детально показує перевірка

Повна перевірка SSL/TLS сертифіката виходить за межі простої відповіді «пройшов/не пройшов». Ось що показує кожне поле:

  • Терміни дії та закінчення — Сертифікат містить мітки часу notBefore та notAfter. Перевірка підтверджує, що поточна дата потрапляє в цей діапазон, та показує, скільки днів залишається до закінчення терміну дії. Будь-яке значення менше 30 днів має ініціювати негайне поновлення сертифіката.
  • Видавець та центр сертифікації (CA) — Поле видавця ідентифікує CA, який підписав сертифікат: наприклад, «Let's Encrypt Authority X3», «DigiCert TLS RSA SHA256 2020 CA1» або «Sectigo RSA Domain Validation CA». Впізнавання видавця допомагає перевірити, що сайт використовує довірений CA, а не невідомий або приватний.
  • Суб'єкт та альтернативні імена суб'єкта (SAN) — Поле CN (Common Name) суб'єкта історично містило ім'я хоста, для якого видано сертифікат. Сучасні сертифікати покладаються на SAN — список усіх доменів і піддоменів, які захищає сертифікат. Один сертифікат може охоплювати як example.com, так і www.example.com або десятки піддоменів. Невідповідність між ім'ям хоста, до якого ви підключаєтесь, і списком SAN спричиняє помилку невідповідності імен.
  • Ланцюжок довіри — Браузери довіряють невеликому набору кореневих CA, попередньо встановлених в операційній системі. Ваш сертифікат сервера майже ніколи не підписується безпосередньо коренем; натомість він підписується проміжним CA, який підписується коренем. Сервер повинен надсилати повний ланцюжок — кінцевий сертифікат плюс всі проміжні сертифікати — щоб браузери могли побудувати шлях довіри. Відсутній проміжний сертифікат — одна з найпоширеніших причин помилок сертифікатів на мобільних пристроях.
  • Тип ключа та алгоритм підпису — Перевірка показує алгоритм відкритого ключа (найпоширеніші RSA 2048-біт або RSA 4096-біт; ECDSA P-256 дедалі більше використовується для продуктивності) та алгоритм підпису, який використовував CA (наприклад, SHA-256 з RSA). Підписи SHA-1 застаріли з 2017 року і спричинятимуть помилки браузера; SHA-256 — поточний стандарт.

Що перевіряє цей інструмент

  • Дійсність сертифіката — чи є сертифікат наразі дійсним і не простроченим.
  • Відповідність домену — чи охоплює сертифікат введений вами домен.
  • Ланцюг сертифікатів — чи є ланцюг довіри від сертифіката до кореневого CA повним.
  • Дата закінчення терміну дії — скільки днів залишилося до закінчення терміну дії сертифіката.
  • Інформація про видавця — який центр сертифікації видав сертифікат.

Як користуватися цим інструментом

Введіть доменне ім'я (наприклад, example.com), і інструмент підключиться до сервера, отримає SSL-сертифікат та відобразить його деталі. Ви побачите суб'єкт, видавця, дати дійсності, тип сертифіката (DV, OV, EV) та будь-які проблеми конфігурації. Використовуйте це для моніторингу власних сертифікатів або перевірки того, що сайт, якому ви збираєтеся передати дані, належним чином захищений.

Типи сертифікатів

Сертифікати Domain Validation (DV) підтверджують лише право власності на домен і є найпоширенішими (використовуються Let's Encrypt). Сертифікати Organization Validation (OV) підтверджують організацію, що стоїть за доменом. Сертифікати Extended Validation (EV) вимагають найретельнішої перевірки. Усі три забезпечують однаковий рівень шифрування — різниця полягає в перевірці ідентичності власника сертифіката.

Поширені помилки сертифікатів та їх значення

Стеки TLS браузерів і серверів суворі. Ось найбільш часто зустрічувані помилки:

  • Термін дії сертифіката закінчився (NET::ERR_CERT_DATE_INVALID) — Поточна дата перевищує мітку часу notAfter. З'єднання за замовчуванням блокується в усіх основних браузерах. Виправлення: негайно поновіть сертифікат. Якщо ви використовуєте Let's Encrypt, запустіть certbot renew або з'ясуйте, чому не спрацювало автоматичне поновлення через cron або таймер systemd.
  • Невідповідність імені хоста (NET::ERR_CERT_COMMON_NAME_INVALID) — Домен у адресному рядку не з'являється в списку SAN сертифіката. Поширені причини: сертифікат видано для www.example.com, але сайт також доступний як example.com (без www), або на сервері залишився старий сертифікат після зміни домену. Виправлення: перевидайте сертифікат із усіма необхідними іменами хостів.
  • Самопідписаний сертифікат — Сертифікат підписаний тим самим ключем, який він захищає, а не довіреним CA. Браузери не можуть перевірити особу, тому відображають попередження «ненадійний сертифікат». Самопідписані сертифікати прийнятні у внутрішніх мережах та середовищах розробки, але ніколи не повинні використовуватися на публічних виробничих сайтах.
  • Ненадійний кореневий сертифікат — Сертифікат видано CA, який не входить до сховища довіри браузера або операційної системи. Це може траплятися з приватними CA, деякими національними CA, видаленими зі сховищ довіри, або при використанні щойно створеного CA, кореневий сертифікат якого ще не набув широкого поширення. Виправлення: перейдіть на відомий публічний CA.
  • Неповний ланцюжок сертифікатів — Сервер надсилає лише кінцевий сертифікат без необхідних проміжних CA-сертифікатів. Браузер не може побудувати шлях довіри до кореневого CA. Настільні браузери іноді відновлюються, отримуючи відсутній проміжний через AIA (Authority Information Access), але мобільні браузери та багато API-клієнтів цього не роблять. Виправлення: налаштуйте ваш вебсервер (nginx, Apache, Caddy) для надсилання повного пакета ланцюжка.

Поновлення сертифікатів та автоматизація

Let's Encrypt, безкоштовний, автоматизований та відкритий CA, яким керує Internet Security Research Group (ISRG), кардинально змінив управління сертифікатами. Сертифікати Let's Encrypt мають термін дії 90 днів навмисно — короткий термін обмежує шкоду від скомпрометованого приватного ключа та заохочує автоматизацію. Протокол ACME (Automated Certificate Management Environment, RFC 8555) дозволяє клієнту на зразок Certbot, acme.sh або хмарному балансувальнику навантаження автоматично підтверджувати контроль над доменом (через HTTP-01 або DNS-01 виклики) та отримувати свіжий сертифікат без участі людини. При правильному налаштуванні ACME-клієнти поновлюють сертифікати приблизно за 30 днів до закінчення терміну дії, роблячи ручне поновлення непотрібним.

Навіть при автоматизації моніторинг є необхідним. Автоматизація може мовчки давати збої через зміни брандмауера, неправильне налаштування DNS, вичерпання ліміту запитів або прострочений обліковий запис сервісу. Найкраща практика — налаштувати зовнішній монітор закінчення терміну дії: cron-завдання, стороній сервіс або інструмент моніторингу доступності, — який сповіщає вас, коли залишковий термін дії сертифіката опускається нижче 21 дня. Виявити збій поновлення, коли у вас ще є три тижні запасу, набагато спокійніше, ніж дізнатися про прострочений сертифікат від ваших користувачів.

Типові помилки, яких слід уникати

  • Покладання на нагадування в календарі замість автоматизації — Поновлення, яким керують люди, дають збій, коли відповідальний інженер у відпустці або змінює роботу. Використовуйте ACME-клієнт із таймером systemd або cron-завданням і перевіряйте, що завдання дійсно виконується.
  • Розгортання неповного ланцюжка сертифікатів — Копіювання на сервер лише кінцевого сертифіката без проміжних спричиняє помилки на мобільних пристроях та небраузерних клієнтах, хоча Chrome на настільному комп'ютері може виглядати нормально (він мовчки завантажує відсутній проміжний).
  • Забуття про піддомени — Видача сертифіката для example.com, але не www.example.com, або навпаки, призводить до помилок невідповідності імен хостів. Використовуйте символьний сертифікат (*.example.com) або SAN-сертифікат із переліком усіх необхідних імен хостів.
  • Ігнорування попереджень про закінчення терміну дії — Багато ACME-клієнтів надсилають електронного листа, коли термін дії сертифіката наближається до кінця, а автоматичне поновлення не відбулось. Ці листи легко загубити у переповненій скриньці. Налаштуйте спеціальний канал сповіщень (Slack, PagerDuty або подібний) для оповіщень про закінчення терміну дії сертифікатів.

Часті запитання

Що відбувається, коли закінчується термін дії SSL-сертифіката?

Браузери відображають помітне попередження безпеки, яке відлякує відвідувачів від продовження. Більшість користувачів підуть, а не обійдуть попередження, що спричиняє значну втрату трафіку. Пошукові системи також можуть знизити позиції сайту. Сучасні інструменти, як-от Let's Encrypt і Certbot, автоматизують оновлення для запобігання випадковому закінченню терміну дії.

Чи є SSL тим самим, що й TLS?

SSL — старіший протокол (остання версія: SSL 3.0, 1996 рік). TLS — сучасний наступник (актуальний: TLS 1.3). Усі версії SSL вважаються небезпечними та застарілими. Коли сьогодні говорять про SSL, зазвичай мають на увазі TLS. Сертифікати досі зазвичай називають SSL-сертифікатами, хоча для фактичного шифрування вони використовують TLS.

Що таке ланцюжок сертифікатів і чому він важливий?

Ланцюжок сертифікатів (або ланцюжок довіри) — це послідовність сертифікатів від кінцевого сертифіката вашого сервера до довіреного кореневого CA. Браузери довіряють лише невеликій кількості кореневих CA, але ці корені підписують проміжні CA, які, своєю чергою, підписують сертифікати серверів. Ваш вебсервер повинен надсилати кінцевий сертифікат плюс усі проміжні сертифікати в ході TLS-рукостискання. Якщо проміжний сертифікат відсутній, клієнти, які не кешували його, не зможуть перевірити сертифікат і відображатимуть помилку — навіть якщо сам сертифікат абсолютно дійсний.

Який термін дії SSL/TLS сертифікатів?

Публічні сертифікати, яким довіряють браузери, мають максимальний термін дії 398 днів (близько 13 місяців) відповідно до вимог CA/Browser Forum з вересня 2020 року. Let's Encrypt видає сертифікати терміном дії 90 днів для заохочення автоматизації. Внутрішні або приватні CA-сертифікати можуть мати довший термін дії, але найкраща практика — тримати їх не більше двох років. Сертифікати з коротшим терміном дії зменшують вікно впливу у разі компрометації приватного ключа.