Переходите з UptimeRobot? Імпортуйте монітори одним кліком за ключем API лише для читання.Почати безкоштовно →
  1. Головна
  2. Блог
  3. Посібники

Сертифікат SSL прострочився: що робити за 20 хвилин

Покрокове відновлення після простроченого сертифіката SSL на сайті клієнта: діагностика, оновлення через Let’s Encrypt або ЦС, виправлення ланцюжка й сповіщення про термін дії.

Посібники

Зазвичай дзвонить клієнт: «Сайт пише, що він небезпечний». Кожен браузер показує попередження на весь екран, пройти далі ніхто не може, а магазин не отримав жодного замовлення від опівночі. Прострочений сертифікат — це повний збій із лякаючим повідомленням.

Ось порядок дій. Перша частина повертає сайт до життя. Друга гарантує, що ви більше не матимете такої розмови.

Хвилина 0: переконайтеся, що це справді термін дії

Виконайте на будь-якій машині:

echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null | openssl x509 -noout -dates -issuer

Ви отримаєте notBefore, notAfter і видавця. Якщо notAfter у минулому, це термін дії. Якщо дати нормальні, але браузери все одно скаржаться, перейдіть до розділу про ланцюжок нижче: проблема в пропущеному проміжному сертифікаті або неспівпадінні імені хоста, а не в терміні дії.

Перевірте також, чи сайт стоїть за Cloudflare або іншим проксі. Якщо Cloudflare працює в режимі SSL «Full», відвідувачі бачать сертифікат Cloudflare, і він оновлюється сам. Прострочений сертифікат стоїть на origin-сервері; виправлення те саме, але не таке термінове. Якщо потрібно виграти час, на годину переключіть Cloudflare з «Full (strict)» на «Full».

Хвилина 2: з’ясуйте, як видано сертифікат

Подивіться на видавця в результаті команди вище.

  • Let’s Encrypt (R10, R11, E5, E6 тощо): щось автоматизоване мало його оновити й не оновило. Зайдіть на сервер і знайдіть клієнт: certbot, acme.sh, Caddy, Traefik, AutoSSL у cPanel або панель хостингу.
  • Комерційний ЦС (DigiCert, Sectigo, GlobalSign): хтось купив його рік тому, а лист про продовження пішов у скриньку, яку ніхто не читає. Потрібно купити або продовжити сертифікат і встановити вручну.
  • Керований хостингом (Kinsta, WP Engine, Cloudways, SiteGround): відкрийте їхню панель; зазвичай там є кнопка «оновити» або «перевипустити», а підтримка може зробити це примусово.

Хвилина 5: оновлення через Let’s Encrypt

На сервері з certbot:

sudo certbot renew --force-renewal
sudo systemctl reload nginx   # or apache2

Якщо не вийшло, прочитайте помилку. Типові причини:

  1. Змінився DNS. Домен тепер вказує на Cloudflare або новий хост, і перевірка HTTP-01 потрапляє не на той сервер. Скористайтеся перевіркою DNS-01 або запустіть certbot там, куди справді надходить трафік.
  2. Закрито порт 80. Для HTTP-01 порт 80 має бути відкритий з інтернету. Добросовісна зміна в файрволі це зламала.
  3. Перевищено ліміт запитів. Let’s Encrypt дозволяє 5 дублікатів сертифіката на тиждень. Якщо зламаний cron повторював спроби кілька днів, ви наштовхнулися на цей ліміт. Зачекайте або випустіть сертифікат для трохи іншого набору імен (додайте www.).
  4. Зник cron або таймер systemd. systemctl list-timers | grep certbot має показати таймер. Якщо його немає, виконайте sudo systemctl enable --now certbot.timer.

У Caddy або Traefik перезапустіть службу й прочитайте журнал: вони оновлюють сертифікати під час запуску.

Хвилина 10: оновлення комерційного сертифіката

Увійдіть у кабінет ЦС, оновіть сертифікат і згенеруйте на сервері новий CSR:

openssl req -new -newkey rsa:2048 -nodes -keyout example.com.key -out example.com.csr

Пройдіть підтвердження володіння (e-mail або DNS), завантажте сертифікат і пакет проміжних сертифікатів, встановіть обидва та перезавантажте вебсервер. Не пропускайте пакет: через це виходить сертифікат, який працює в Chrome на вашому комп’ютері й не працює на Android.

Хвилина 15: перевірте ланцюжок, а не лише дати

echo | openssl s_client -servername example.com -connect example.com:443 -showcerts 2>/dev/null | grep -E "s:|i:"

Ви маєте побачити кінцевий сертифікат, потім один-два проміжні та кореневий, якому довіряє клієнт. «unable to get local issuer certificate» означає, що бракує проміжного сертифіката. Перевірте з другого пристрою через мобільний інтернет: корпоративні мережі кешують сертифікати так, що проблеми ховаються.

Потім відкрийте сайт у приватному вікні. Якщо попередження зникло, повідомте клієнта й запишіть, що зламалося.

Щоб це не повторилося: три рівні захисту

1. Полагодьте автоматизацію. Який би механізм оновлення не підвів, зробіть так, щоб він збоїв голосно. У certbot додайте --deploy-hook, який у разі успіху пінгує адресу heartbeat-монітора: тоді тиша означатиме проблему. У панелі хостингу ввімкніть їхній лист про термін дії та спрямуйте його на спільну поштову скриньку.

2. Відстежуйте термін дії ззовні. Автоматизація мовчки ламається частіше, ніж думають. Зовнішній SSL-монітор читає сертифікат, який бачать ваші відвідувачі, і сповіщає за 30, 14 та 3 дні до закінчення терміну дії. У Tenium це один SSL-монітор на ім’я хоста (перевірки SSL і терміну дії домену доступні з тарифу Starter за $7 на місяць), а кожен https-монітор записує термін дії в межах звичайної перевірки. Сповіщення надходять у Telegram або на e-mail, а сторінка статусу клієнта показує, що з сертифікатом усе гаразд.

3. Внесіть це у звіт для клієнта. Рядок «Сертифікат SSL: дійсний, залишилося 61 день» у щомісячному звіті дає клієнтові відчуття турботи, а вас змушує раз на місяць перевіряти це без зайвих роздумів.

Про сертифікати на 90 і 47 днів

Індустрія переходить на коротші терміни дії сертифікатів. Зараз у Let’s Encrypt це 90 днів, а CA/Browser Forum погодив шлях до сертифікатів на 47 днів до 2029 року. Через це автоматизація стає обов’язковою, а зовнішній моніторинг — єдиною розумною страховкою: якщо оновлення зламається, у вас є дні, а не місяці, перш ніж відвідувачі побачать попередження. Налаштуйте його зараз, поки пам’ять про останній збій свіжа.

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

Читайте також

Дивіться також моніторинг терміну дії домену, інструмент DNS-запитів та інструмент для HTTP-заголовків, щоб перевірити, що справді отримує відвідувач, а також порівняння Tenium з Pingdom, якщо перевірки сертифікатів впливають на вибір постачальника. Магазинам, які не можуть дозволити собі прострочений сертифікат, варто прочитати про моніторинг для інтернет-магазинів.


Читайте також

Пов’язані сторінки Tenium

Відстежуйте перший сайт безкоштовно

30 моніторів безкоштовно, перевірки з 2 регіонів, без банківської картки. Перевірка SSL і терміну дії домену — від $7 на місяць.