SSL для сопоставленных поддоменов в мультисайте (без плагинов)

Вопрос или проблема

WP мультисайтовая сеть на основе поддоменов, и привязка доменов к доменам клиентов без использования плагина (я использую WP 4.6.x).

На сервере установлен SSL-сертификат, так что основной домен сети отображается с зеленым замком — но я не обеспечиваю покрытие доменов клиентов — их принудительно переводят на http.

Мне нужно, чтобы все домены моих клиентов отображались по https с зеленым замком — без установки отдельного SSL-сертификата для каждого домена. Как лучше всего к этому подойти?

Итак, вот решение, которого я достиг. Оно будет варьироваться в зависимости от того, на каком сервере вы находитесь и что можете сделать в своем аккаунте хостинга (или на что согласится ваш хостинг-провайдер).

Я использую Apache и нахожусь в среде хостинга WHM / cPanel с выделенным IP-адресом и root-доступом. Основная идея должна работать и в других средах, но, как обычно, YMMV…

SNI должно быть включено и запущено в Apache.

Каждый домен должен быть покрыт SSL-сертификатом — подстановочный сертификат для основной сети покроет только поддомены, но не покроет сопоставленные домены.

Я добавил доменное имя(а) клиента как “дополнительный домен” в аккаунт для домена основной сети WP в cPanel. Обратите внимание, что для этого пришлось включить настройку "Разрешить создание припаркованных/дополнительных доменов, которые не зарегистрированы" в WHM. В противном случае cPanel будет жаловаться: домен уже указывает на IP-адрес, который, похоже, не использует DNS-серверы, связанные с этим сервером.

Я также убедился, что автоSSL включен в WHM для аккаунта, которому принадлежит домен основной сети WP. Это вызывает установку SSL-сертификата для любых дополнительных доменов. автоSSL, похоже, основан на LetsEncrypt, так что если вы не можете использовать cPanel autoSSL, вы, вероятно, можете просто использовать LetsEncrypt.

У меня уже был приобретен подстановочный SSL-сертификат для домена основной сети, но приятно, что автоSSL учитывает этот сертификат и не пытается его заменить.

Наконец, я удостоверился, что в админке WP (network->sites->edit site) для сопоставленного домена в настройке siteURL указано https:// — и, конечно, убедился, что весь контент обслуживается по https, чтобы не возникало предупреждений о смешанном содержимом в браузере. В моем случае мне пришлось зайти в phpMyAdmin и вручную обновить таблицу опций для сайта. Мне еще надо выяснить, почему админ-страница не сохранила изменения, когда я изменил их там.

Теперь сайт(ы) моего клиента покрыты автоматическим обновляющимся бесплатным SSL, и открываются в браузере на всех страницах с зеленым замком.

Ответ или решение

Для решения задачи обеспечения HTTPS-защиты доменных имен клиентов в сети WordPress Multisite с использованием поддоменов и доменного маппинга без плагинов, необходимо учесть несколько специфических факторов и выполнить ряд технических шагов. Дадим подробное объяснение, основанное на доступной информации о вашем окружении и требованиях.

Теория

В вашей ситуации, управление несколькими доменами в WordPress Multisite, предполагает настройку SSL для каждого из этих доменов без использования отдельных сертификатов. Основная сложность заключается в том, что классический подход с использованием wildcard-сертификата для поддоменов не подходит для покрываемых доменных имен, которые маппируются на клиентские домены.

Пример

Вы описали свою серверную конфигурацию: вы используете Apache на сервере с управлением через WHM/cPanel и имеете выделенный IP-адрес с правами root. Одним из ключевых требований является поддержка SNI (Server Name Indication) на вашем Apache-сервере, что позволяет использовать один IP-адрес для нескольких SSL- сертификатов. Это важно потому, что на одном сервере может находиться множество доменов.

Еще одним инструментом для решения вашей задачи является autoSSL — возможность, предоставляемая cPanel, что позволяет автоматически выдавать и устанавливать сертификаты SSL для дополнительных доменов. Чаще всего autoSSL работает на основе бесплатного сертификата Let’s Encrypt, который автоматически обновляется. Этот метод интегрирования SSL хорошо подходит для динамического окружения с постоянным увеличением числа поддерживаемых доменов.

Применение

Чтобы внедрить решение, следуйте шагам:

  1. Поддержка SNI в Apache: Убедитесь, что ваш Apache-сервер поддерживает SNI. В большинстве современных конфигураций это так по умолчанию, но вы можете это проверить в документации вашего сервера.

  2. Добавление клиентских доменов через cPanel: Для каждого доменного имени клиента добавьте соответствующий домен как add-on domain в cPanel. Это требует настройку WHM для разрешения на создание дополнительных или паркованных доменов, которые уже имеют назначенный IP.

  3. Включение autoSSL: В WHM убедитесь, что автоSSL включен для вашего аккаунта. Это позволит cPanel автоматически создавать и устанавливать SSL-сертификаты для всех добавленных доменов. В настройках WHM можно дополнительно проверить, что autoSSL настроен на работу с Let’s Encrypt, обеспечивая беспроблемное применение и обновление сертификатов.

  4. Обновление настроек WordPress: В административной панели WordPress убедитесь, что смотритель сайтов имеет у всех доменов SiteURL, начинающийся с https://. Если изменения не подтверждаются напрямую через интерфейс администрирования, придется напрямую обновить базу данных через phpMyAdmin в таблице wp_options для каждого сайта.

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

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

Следуя этой инструкции, вы сможете обеспечить безопасную коммуникацию для всех доменов вашей сети WordPress Multisite, без необходимости устанавливать отдельные SSL-сертификаты для каждого. Это не только упрощает процесс администрирования, но и снижает финансовые и временные затраты на поддержку инфраструктуры.

Оцените материал
Добавить комментарий

Капча загружается...