SSL-сертификат — это «паспорт» сайта: он подтверждает, что домен принадлежит именно этому серверу, и включает шифрование трафика (тот самый HTTPS). Когда сертификат протухает или настроен криво, браузер пугает посетителей красным экраном «Подключение не защищено» — и трафик умирает. Проверка занимает минуту, вот три способа от простого к продвинутому.
Способ 1. Замочек в браузере (10 секунд)
Откройте сайт, кликните по замочку слева от адреса → «Безопасное подключение» → «Сертификат действителен». В открывшемся окне три главных поля:
- Кому выдан — домен должен совпадать с тем, что в адресной строке;
- Кем выдан — центр сертификации: Let’s Encrypt, GlobalSign, Sectigo (что такое ЦС — в глоссарии);
- Действителен до — главная строчка: просроченный сертификат = красный экран у всех посетителей.

Способ 2. Онлайн-чекеры (полная диагностика)
Сервисы вроде SSL Labs (ssllabs.com/ssltest) прогоняют сайт по десяткам параметров и ставят оценку от A+ до F. Смотрите на три вещи: оценку (B и ниже — есть что чинить), цепочку сертификатов (ошибка chain incomplete — самая частая причина «работает в Chrome, не работает на Android») и протоколы (TLS 1.0/1.1 должны быть выключены).
Способ 3. Терминал (для владельцев серверов)
Быстрая проверка срока действия с любого Linux/macOS:
echo | openssl s_client -connect site.ru:443 -servername site.ru 2>/dev/null | openssl x509 -noout -dates
Вывод: notBefore и notAfter — даты начала и конца действия. Удобно завести проверку в мониторинг, чтобы за неделю до истечения приходило письмо.
Почему браузер ругается: разбор частых причин
Сертификат просрочен. Бесплатные Let’s Encrypt живут 90 дней и должны продлеваться автоматически. Если автопродление отвалилось — перевыпустите: гайд по установке Let’s Encrypt.
Имя не совпадает. Сертификат выдан на site.ru, а вы открыли www.site.ru, которого в сертификате нет. Решение — перевыпустить с обоими именами или с wildcard (*.site.ru).
Неполная цепочка. На сервере установлен только сам сертификат без промежуточных. В nginx используйте fullchain.pem, а не cert.pem — это решает проблему в 90% случаев.
Самоподписанный сертификат. Сервер «сам себе выписал паспорт» — шифрование есть, доверия нет. Норма для тестов и панелей управления, недопустимо для публичного сайта.
Проверка файлов сертификата на своём сервере
Когда сертификат лежит файлом (cert.pem, fullchain.pem), его можно изучить не поднимая сайт:
openssl x509 -in fullchain.pem -noout -subject -issuer -dates
Покажет домен, издателя и срок действия. Частая задача — проверить, что сертификат и приватный ключ из одной пары (после переноса файлы легко перепутать):
openssl x509 -noout -modulus -in cert.pem | openssl md5
openssl rsa -noout -modulus -in privkey.pem | openssl md5
Два одинаковых хеша — пара совпадает. Разные — nginx не запустится с ошибкой key values mismatch.
Wildcard, SAN и мультидомен: какой сертификат брать
- Обычный (одно имя + www) — хватает типовому сайту; Let’s Encrypt по умолчанию выпускает на оба имени;
- SAN (несколько доменов) — один сертификат на site.ru, site.com и shop.site.ru: удобно, но при добавлении домена перевыпускается целиком;
- Wildcard (*.site.ru) — любые поддомены без перевыпуска. В Let’s Encrypt требует подтверждения через DNS-запись, поэтому проще всего работает там, где хостинг сам управляет DNS-зоной.
Редирект на HTTPS: чтобы сертификат работал всегда
Сертификат установлен, но сайт продолжает открываться и по http:// без шифрования? Нужен принудительный редирект. В nginx это отдельный server-блок:
server {
listen 80;
server_name site.ru www.site.ru;
return 301 https://site.ru$request_uri;
}
На виртуальном хостинге — галочка «Перенаправлять на HTTPS» в панели. Следующий уровень — заголовок HSTS: add_header Strict-Transport-Security "max-age=31536000"; — после первого визита браузер вообще перестанет пытаться ходить по http. Включайте, только когда уверены, что HTTPS работает стабильно: откатить HSTS быстро не получится.
Смешанный контент: сертификат есть, а замочек сломан
Частая картина после переезда на HTTPS: сертификат валиден, но браузер показывает «Не защищено» или замочек с предупреждением. Причина — mixed content: сама страница грузится по https, а картинки, стили или скрипты в её коде прописаны через http://. Как найти: F12 → вкладка Console — браузер перечислит все смешанные ресурсы списком. Как чинить: в базе сайта заменить http://site.ru на https://site.ru (в WordPress это делается плагином Better Search Replace за минуту), а для сторонних ресурсов использовать протокол-относительные или https-ссылки. После чистки замочек становится честно зелёным.
Частые вопросы
Платный сертификат лучше бесплатного?
Для шифрования — никакой разницы: Let’s Encrypt даёт тот же TLS, что и платные. Платят за расширенную валидацию организации (EV/OV), страховку и wildcard с меньшей вознёй. Обычному сайту хватает бесплатного.
Как часто проверять сертификат?
Достаточно автоматики: мониторинг срока действия + автопродление. Руками — после любых переездов сайта и смены хостинга. Кстати, у большинства провайдеров из рейтинга хостингов SSL выпускается и продлевается в панели одной кнопкой.
Что такое CSR и зачем он нужен?
Запрос на выпуск сертификата, который генерируется на вашем сервере. Подробно — в глоссарии CSR.
Влияет ли HTTPS на позиции в поиске?
Да: HTTPS — подтверждённый фактор ранжирования у Google и гигиенический минимум для Яндекса. Плюс браузеры помечают http-формы как небезопасные — конверсия падает даже без учёта SEO. В 2026 году сайт без HTTPS — это добровольный гандикап.
Можно ли использовать один сертификат на нескольких серверах?
Технически да — скопируйте сертификат и приватный ключ на второй сервер. Но с Let’s Encrypt проще выпустить каждому серверу свой: автопродление на копиях не работает, и через 90 дней вторая машина останется с протухшим сертификатом.
Что делать, если сертификат «украли»?
Опасен не сертификат, а приватный ключ. Если ключ мог утечь (лежал в публичном репозитории, сервер взломали) — перевыпустите сертификат с новым ключом и отзовите старый: certbot revoke. Сам по себе .crt-файл секретов не содержит — он и так публичен.
Шпаргалка: команды openssl на все случаи
| Задача | Команда |
|---|---|
| Срок действия у сайта | echo | openssl s_client -connect site.ru:443 2>/dev/null | openssl x509 -noout -dates |
| Кем выдан и на кого | openssl x509 -in cert.pem -noout -subject -issuer |
| Все домены сертификата | openssl x509 -in cert.pem -noout -ext subjectAltName |
| Ключ подходит к сертификату? | сравнить openssl x509/rsa -noout -modulus | openssl md5 |
| Проверить цепочку | openssl verify -CAfile chain.pem cert.pem |
Автопродление Let’s Encrypt: проверяем, что оно живо
Большинство «внезапно протухших» сертификатов — это отказавшее автопродление, о котором никто не знал. Проверка занимает минуту:
sudo certbot renew --dry-run
Команда репетирует продление без реального выпуска. Ответ «Congratulations, all simulated renewals succeeded» — автоматика в порядке. Ошибка — читайте, что сломалось: чаще всего это изменившийся конфиг nginx (certbot не может пройти проверку домена) или закрытый 80-й порт, который нужен для валидации. Убедитесь также, что сам таймер существует: systemctl list-timers | grep certbot — должна быть строка с ближайшим запуском. Список всех сертификатов на сервере и их сроков: sudo certbot certificates. Заведите привычку: после любых работ с веб-сервером — один dry-run. Это дешевле, чем субботний звонок «у нас красный экран у всех клиентов».
Итог
Минимальная гигиена: замочек — зелёный, срок — не истекает в ближайшие 2 недели, SSL Labs — оценка A. Всё это проверяется за пять минут и спасает от самой обидной потери трафика — когда сайт работает, но браузеры в него не пускают.