Установка SSL-сертификата часто кажется завершённой, как только в вашем собственном браузере появляется замок. Потом клиент со старым телефоном видит предупреждение, платёжный провайдер отклоняет вебхук или сертификат тихо истекает три месяца спустя. Большинство таких проблем вызвано несколькими повторяющимися ошибками. В этом руководстве объясняется, как диагностировать и исправить каждую из них, работает ли ваш сайт на VPS, в панели управления или за CDN.

Неполная промежуточная цепочка

Центр сертификации подписывает ваш сертификат промежуточным сертификатом, который, в свою очередь, подписан доверенным корневым. Сервер должен отдавать ваш сертификат вместе с промежуточным. Если он отдаёт только ваш сертификат, браузеры на компьютерах часто работают, потому что кэшируют или докачивают недостающее звено, а мобильные приложения, API-клиенты и старые устройства выдают ошибку.

Как это диагностировать

Воспользуйтесь онлайн-проверкой SSL или выполните openssl s_client -connect example.com:443 -showcerts и сосчитайте возвращённые сертификаты. При неполной цепочке сертификатов обычно виден только один сертификат или сообщение о том, что издателя не удалось проверить.

Как это исправить

  • В Nginx укажите в директиве сертификата файл полной цепочки, а не одиночный сертификат.
  • В Apache используйте файл полной цепочки или, для старых версий, задайте директиву файла цепочки.
  • В панели управления вставьте пакет CA в отдельное поле промежуточного сертификата.

Несовпадение имени

Ошибка несовпадения имени означает, что имени хоста из адресной строки нет в сертификате. Типичные причины: сертификат выпущен для example.com, но не для www.example.com; после выпуска сертификата добавили новый поддомен; сервер отдаёт сертификат по умолчанию, потому что у виртуального хоста вашего домена нет настройки SSL.

Проверьте альтернативные имена субъекта (Subject Alternative Names) в сертификате и сравните их со всеми используемыми вами именами хостов. Перевыпустите сертификат со всеми именами и убедитесь, что у каждого виртуального хоста HTTPS задано собственное имя сервера, чтобы сервер мог выбрать нужный сертификат с помощью SNI.

Смешанный контент после перехода на HTTPS

Смешанный контент возникает, когда страница HTTPS загружает изображения, скрипты или таблицы стилей по обычному HTTP. Браузеры полностью блокируют небезопасные скрипты и могут показывать сломанный замок из-за изображений. Симптомы — от пропавшего замка до неработающих меню и страниц оформления заказа.

  • Откройте консоль разработчика в браузере: в ней перечислены все заблокированные и небезопасные ресурсы.
  • Обновите настройки URL сайта в вашей CMS, чтобы новые ссылки создавались с HTTPS.
  • Найдите в базе данных жёстко прописанные ссылки http:// в содержимом, настройках темы и виджетах и аккуратно замените их, предварительно сделав резервную копию.
  • Проверьте сторонние вставки, шрифты и скрипты отслеживания, которые иногда по-прежнему ссылаются на адреса HTTP.

Заголовок Content-Security-Policy с директивой upgrade-insecure-requests может закрыть оставшиеся случаи, но исправляйте источники, а не полагайтесь только на него.

Сбои автопродления ACME

Бесплатные сертификаты Let's Encrypt действуют 90 дней и зависят от автопродления ACME. Когда продление не срабатывает, никто этого не замечает, пока сайт не покажет предупреждение об истечении срока. Типичные причины:

  • Заблокированная проверка HTTP: правило редиректа, межсетевой экран или CDN не пускает сервер проверки к файлу проверки в каталоге /.well-known/acme-challenge/.
  • Изменения DNS: домен теперь указывает на другой сервер или CDN, и проверка приходит не туда.
  • Сломанное задание продления: задание cron или таймер systemd удалили при обновлении сервера либо клиент отрабатывает, но веб-сервер так и не перезагружается.
  • Ограничения по частоте: повторные неудачные попытки во время тестирования могут временно заблокировать выпуск новых сертификатов.

Выполните пробное продление (dry-run), чтобы увидеть точную ошибку, убедитесь, что путь проверки доступен по обычному HTTP, и добавьте хук перезагрузки, чтобы веб-сервер подхватил новый сертификат. Для доменов за CDN проверка через DNS часто надёжнее. Настройте мониторинг срока действия, чтобы получить предупреждение за несколько недель до истечения сертификата.

Циклы редиректа за прокси и CDN

Цикл редиректа часто появляется сразу после включения HTTPS на сайте за обратным прокси, балансировщиком нагрузки или CDN. CDN подключается к вашему серверу по HTTP, сервер перенаправляет на HTTPS, CDN снова пересылает запрос по HTTP, и круг повторяется.

Как устранить цикл

  • Настройте CDN на подключение к источнику по HTTPS с действительным сертификатом на сервере вместо гибкого режима (flexible).
  • Если прокси завершает TLS, пусть приложение доверяет заголовку X-Forwarded-Proto, чтобы знать, что исходный запрос уже был защищённым.
  • Держите редиректы в одном месте. Если один редирект в CDN, другой в веб-сервере и третий в CMS, циклы почти гарантированы.

Краткий чек-лист после установки

  • Проверьте внешним инструментом проверки SSL, а не только в своём браузере.
  • Проверьте каждое имя хоста, включая www и используемые имена, связанные с почтой.
  • Просканируйте ключевые страницы на смешанный контент, особенно оформление заказа и формы обращения.
  • Выполните пробное продление и убедитесь, что мониторинг настроен.
  • Проверьте, что HTTP перенаправляет на HTTPS за один переход.

Если вы предпочитаете поручить это нам, наша услуга установки и настройки SSL-сертификатов охватывает сертификаты, цепочки, редиректы и настройку продления для сайтов компаний в Лонг-Бич и округе Лос-Анджелес.

Часто задаваемые вопросы об ошибках SSL

Почему сайт работает на компьютере, но на телефонах показывает ошибку SSL?

Это классический признак отсутствующего промежуточного сертификата. Браузеры на компьютерах могут восполнить пробел, а мобильные устройства и приложения — нет. Установите полную цепочку.

Нужно ли переустанавливать сертификат после продления?

Нет, если продление настроено автоматически и правильно. Клиент заменяет файлы, а хук перезагрузки сообщает веб-серверу, что нужно использовать их. Если после продления по-прежнему отдаётся старый сертификат, значит, отсутствует шаг перезагрузки.

Достаточно ли гибкого SSL (flexible) на CDN?

Он шифрует только соединение между посетителем и CDN. Трафик до вашего сервера остаётся незашифрованным, а циклы редиректа возникают часто, поэтому используйте полное шифрование с действительным сертификатом на источнике.