Для перевода Joomla на HTTPS нужны действующий сертификат, правильная настройка сервера и проверка самого сайта. Разберём, где получить сертификат, как организовать его продление, включить HTTPS в Joomla и устранить смешанное содержимое или циклические перенаправления.

SSL, TLS и HTTPS: в чём разница

HTTPS — это HTTP, передаваемый через защищённое соединение TLS. TLS шифрует передаваемые данные, защищает их от незаметного изменения и позволяет браузеру проверить подлинность сервера.

Название SSL-сертификат по-прежнему встречается в панелях хостинга и предложениях удостоверяющих центров. Однако SSL — устаревший предшественник TLS. Для современного сайта корректнее говорить о TLS-сертификате или SSL/TLS-сертификате.

HTTPS нужен для защиты паролей, форм и других данных в пути между браузером и сервером. При этом сертификат не защищает Joomla от уязвимых расширений, не предотвращает взлом и не доказывает добросовестность владельца сайта.

Зелёный замок или зелёная строка с названием компании — устаревший ориентир. Современные браузеры по-разному показывают сведения о соединении. Проверяйте отсутствие предупреждений и действительность сертификата в информации о сайте.

Как выбрать сертификат

Сертификат должен покрывать все имена, по которым посетители обращаются к сайту. Домен с www и без него — разные имена. Даже если один вариант перенаправляется на другой, для исходного HTTPS-адреса тоже нужен подходящий сертификат: проверка TLS происходит до перенаправления.

Для большинства обычных сайтов Joomla подходит сертификат DV, подтверждающий контроль над доменом. Сертификаты OV и EV дополнительно проверяют организацию. Это различия в проверке владельца, а не переключатель силы шифрования.

Для нескольких имён можно использовать сертификат с несколькими записями SAN. Wildcard вида *.example.com покрывает поддомены одного уровня, например www.example.com и shop.example.com, но сам по себе не покрывает example.com или a.shop.example.com.

Кириллическое доменное имя представляется в сертификате в ASCII-форме — Punycode. Проверьте поддержку такого домена у выбранного удостоверяющего центра.

Выделенный IP обычно не требуется: современные серверы и браузеры поддерживают SNI, позволяющий обслуживать несколько HTTPS-сайтов на одном IP.

Получение и продление сертификата

Сертификат выпускает удостоверяющий центр, а устанавливает его хостинг, администратор сервера или оператор прокси. Joomla сама сертификаты не выпускает.

Как получить и установить сертификат

На обычном хостинге начните с панели управления доменом. Часто там есть выпуск бесплатного сертификата Let’s Encrypt и автоматическое продление. На собственном сервере для этого используют ACME-клиент, например Certbot.

Общий порядок:

  1. Укажите нужные доменные имена.
  2. Подтвердите контроль над ними способом, который поддерживает выбранный сервис.
  3. Установите сертификат, соответствующий закрытый ключ и необходимые промежуточные сертификаты.
  4. Проверьте открытие сайта по HTTPS до включения принудительных перенаправлений.

Let’s Encrypt поддерживает автоматическую проверку через HTTP или DNS. Для HTTP-01 требуется доступ к проверочному адресу на порту 80. Для wildcard-сертификата используется DNS-01. Если DNS-записи меняются вручную, проверьте, как будет выполняться следующее продление.

Закрытый ключ храните защищённо. Его не нужно вставлять в материал Joomla или отправлять обычным письмом. При установке через хостинг используйте предусмотренный защищённый интерфейс.

Как организовать продление

У сертификата ограниченный срок действия. Он зависит от удостоверяющего центра и профиля выпуска; правило «любой сертификат выдаётся на год» неверно. Срок оплаченной услуги также может отличаться от срока конкретного сертификата.

Настройте автоматическое продление заранее и проверьте:

  • запускается ли задача продления;
  • сохраняется ли возможность подтвердить домен;
  • устанавливается ли новый сертификат в нужный сайт;
  • начинает ли сервер или прокси использовать его после обновления;
  • поступают ли уведомления об ошибках.

Проверяйте дату окончания сертификата, который фактически отдаётся посетителю. Наличие нового файла на сервере ещё не означает, что сайт уже использует его.

Где настраивается HTTPS

Переход затрагивает несколько уровней. У каждого своя задача.

Таблица «Настройки HTTPS»
УровеньЗа что отвечает
Хостинг Выпуск и установка сертификата, продление, доступные настройки домена
Веб-сервер Приём HTTPS-соединений, выдача сертификата, перенаправления HTTP-запросов
Joomla Принудительный HTTPS для обрабатываемых ею страниц, формирование адресов
Обратный прокси или CDN Внешнее HTTPS-соединение, соединение с исходным сервером, передача сведений об исходном запросе

Сначала сделайте резервную копию файлов и базы данных. Сохраните исходную конфигурацию сервера и убедитесь, что у вас есть доступ к файлам через панель хостинга или другой предусмотренный способ. Это позволит исправить настройку, если панель Joomla перестанет открываться.

Как включить HTTPS в Joomla

После установки сертификата вручную откройте сайт и панель управления по HTTPS. Если браузер сообщает об ошибке сертификата, сначала устраните её на хостинге или сервере.

В Joomla 4, 5 и 6 откройте Система → Общие настройки → Сервер. В разделе параметров сервера найдите Включить HTTPS. В английском интерфейсе настройка называется Force HTTPS.

Таблица «Режимы HTTPS в Joomla»
Русский интерфейсАнглийский интерфейсДействие
Нет None Joomla не принуждает к HTTPS
Панель управления Administrator Only Принудительный HTTPS только для административной части
Весь сайт Entire Site Принудительный HTTPS для сайта и панели управления

Для полного перехода выберите Весь сайт, сохраните настройки и проверьте обе части сайта.

Настройка записывается в параметр force_ssl файла configuration.php: 0 — нет, 1 — панель управления, 2 — весь сайт. Обычно удобнее менять её через интерфейс Joomla.

Параметр live_site в стандартной конфигурации обычно остаётся пустым. Заполнять его адресом сайта только ради HTTPS не требуется. Если он уже задан, проверьте, нет ли там старого домена, протокола или пути.

Включить HTTPS не устанавливает сертификат и не исправляет HTTP-адреса, вручную записанные в материалах, модулях, шаблоне или расширениях. Кроме того, перенаправление Joomla не охватывает файлы, которые веб-сервер выдаёт напрямую.

Перенаправление с HTTP на HTTPS

Старые HTTP-адреса должны вести на соответствующие HTTPS-страницы с сохранением пути и параметров запроса. Не перенаправляйте все страницы на главную.

Обычно общий редирект удобнее настроить в панели хостинга или на внешнем веб-сервере. Согласуйте правила на всех уровнях: Joomla, хостинг, сервер и CDN должны использовать один протокол и один основной вариант домена.

Ниже приведены примеры для сервера без обратного прокси, на котором HTTPS завершается непосредственно. Замените example.com своим основным доменом. Сохраните обработку проверочных адресов, предусмотренную вашим ACME-клиентом.

Apache и .htaccess

Если Apache разрешает правила в .htaccess и включён mod_rewrite, пример перенаправления выглядит так:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L]

Разместите правило перед правилами маршрутизации Joomla. Не заменяйте им весь существующий .htaccess.

Этот пример переводит HTTP на HTTPS. Выбор основного домена с www или без него может требовать отдельного согласованного правила.

Nginx

Nginx не читает .htaccess. Перенаправление настраивается в конфигурации сервера или через панель хостинга.

Пример HTTP-блока:

server {
    listen 80;
    server_name example.com www.example.com;

    return 301 https://example.com$request_uri;
}

Для HTTPS нужен отдельный настроенный блок с сертификатом. Перед применением изменений проверьте синтаксис конфигурации, затем выполните предусмотренную вашим сервером перезагрузку конфигурации.

За обратным прокси эти примеры нельзя применять без проверки схемы соединений: внутренний сервер может получать HTTP, хотя посетитель уже использует HTTPS.

Joomla за обратным прокси

Обратный прокси или CDN может принимать HTTPS от посетителя, а затем обращаться к Joomla по HTTP. Если Joomla не получает достоверные сведения об исходном протоколе, она снова перенаправляет посетителя на HTTPS. Следующий запрос приходит тем же способом — возникает цикл.

В Общих настройках → Сервер → Параметры прокси-сервера есть параметр Балансировщик нагрузки — Behind Load Balancer. Он нужен, когда сайт действительно работает за соответствующим прокси.

Перед включением убедитесь, что прокси правильно передаёт исходный протокол и адрес клиента, а сервер принимает эти сведения только от доверенного прокси. Посетитель не должен иметь возможность подменить их прямым запросом к исходному серверу.

Параметр Исходящий прокси-сервер предназначен для запросов, которые выполняет сама Joomla. Он не решает распознавание входящего HTTPS.

В Cloudflare режим Flexible использует HTTP между Cloudflare и исходным сервером. При принудительном HTTPS на исходном сервере это может вызвать цикл. Для защищённого соединения с проверкой сертификата исходного сервера используйте Full (strict) после установки подходящего действующего сертификата.

Не подменяйте протокол безусловной строкой $_SERVER['HTTPS'] = 'on'. Такая подмена скрывает реальное состояние запроса вместо исправления конфигурации.

Смешанное содержимое и ссылки

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

Откройте проблемную страницу, запустите инструменты разработчика и проверьте вкладки Console и Network. Найдите адрес ресурса и место, из которого он подключён: материал, модуль, шаблон, CSS или расширение.

Для ресурсов своего сайта используйте корректные относительные пути. Для сторонних ресурсов указывайте явный HTTPS-адрес после проверки его доступности. Если HTTPS не поддерживается, замените ресурс или удалите подключение.

Не используйте адреса вида //example.com/file.js как способ перехода на HTTPS: они наследуют протокол страницы.

Внутренние ссылки на страницы оформляйте относительно домена, например /knowledge-base/configuration-php. Системные ссылки Joomla записывайте без начального слеша: index.php?option=com_content&view=article&id=123.

Проверьте также адреса отправки форм. Данные должны сразу уходить по HTTPS: перенаправление после HTTP-запроса не защищает уже отправленную информацию.

Типичные ошибки

Ошибки сертификата и ошибки перенаправлений требуют разных исправлений.

Таблица «Ошибки HTTPS и их проверка»
СимптомЧто проверить
Сертификат просрочен Продление, установку нового сертификата и его фактическую выдачу
Сертификат не подходит домену Наличие нужного имени в SAN, варианты с www и без него
Браузер не доверяет сертификату Промежуточные сертификаты, выбранный сертификат сайта, время устройства
ERR_TOO_MANY_REDIRECTS Противоречащие правила, настройки прокси и распознавание исходного HTTPS
Пропали стили, изображения или функции Заблокированные HTTP-ресурсы, неверные пути и ошибки запросов
После продления показывается старый сертификат Активную конфигурацию сервера, прокси и все узлы, обслуживающие домен
Сбрасывается авторизация Переходы между доменами или протоколами, настройки cookies и кэширование

При циклических перенаправлениях посмотрите последовательность ответов и заголовки Location. Повтор одного адреса или чередование HTTP/HTTPS либо www/без www помогают найти конфликт.

Исправляйте правило на том уровне, где оно возникает. Очистка cookies или кэша может убрать старое состояние после исправления, но не устраняет противоречие в конфигурации.

Не отключайте проверку сертификатов в браузере, PHP, HTTP-клиенте, расширении или прокси. Исправьте имя домена, срок действия, цепочку доверия или хранилище доверенных сертификатов.

Проверка после перехода

После настройки проверьте главную страницу, несколько вложенных страниц, панель управления, вход, поиск, формы и функции установленных расширений.

Убедитесь, что:

  • HTTP-страницы перенаправляются на соответствующие HTTPS-адреса;
  • путь и параметры запроса сохраняются;
  • нет циклов и лишних цепочек перенаправлений;
  • HTTPS-страницы открываются без предупреждений;
  • ресурсы и формы используют защищённые адреса;
  • внутренние ссылки ведут сразу на нужную версию страницы;
  • canonical, языковые ссылки и XML-карта сайта содержат правильные HTTPS-адреса.

В Google Search Console проверьте HTTPS-вариант сайта. Если используется доменный ресурс, он уже охватывает разные протоколы; ресурс с префиксом URL относится к конкретному протоколу. Для смены только HTTP на HTTPS инструмент «Изменение адреса» не нужен.

Проверьте HTTPS-версию в Яндекс Вебмастере и отправьте актуальную карту сайта. Директиву Host в robots.txt добавлять не нужно: Яндекс отказался от неё. При этом HTTP-адреса должны оставаться доступными поисковому роботу для получения перенаправлений.

HSTS можно настраивать после проверки стабильной работы HTTPS и продления сертификата. Не включайте охват всех поддоменов или preload, пока не проверены их готовность и последствия такой политики.

Заключение

Для правильной работы HTTPS в Joomla недостаточно установить сертификат или выбрать один параметр. Нужны автоматическое продление, согласованные перенаправления, корректная работа за прокси и отсутствие HTTP-ресурсов. После перехода продолжайте контролировать срок сертификата и ошибки продления.