Переименование веб-сервера на основе SSL (HTTPS)

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

У меня имеется сервер Apache HTTPS с доступом из интернета current.example.com. Я хочу переименовать веб-сервер в nextname.example.com. Мне также необходимо, чтобы current.example.com продолжал работать во время переходного периода. Это только изменение имени, и тот же контент из того же расположения будет обслуживаться.

Я начал с добавления ServerAlias в мои конфигурации virtualhost (как для HTTP, так и для HTTPS). Это привело к сообщению “ваше соединение не является приватным” при обращении к nextname.example.com. Я ожидал, что это произойдет.

Я знаю, что одним из решений (возможно, единственным?) является создание нового сертификата для nextname и создание новой конфигурации VirtualHost.

Но я надеюсь на другое решение.

Также я понимаю, что новый приватный ключ не обязателен, но, вероятно, рекомендован, так как нам все равно потребуется новый сертификат.

Есть ли способ настроить так, чтобы сертификат мог использоваться/разделяться обоими виртуальными серверами, или необходим новый сертификат для возможности сохранения старого имени?

Сертификат должен соответствовать посещаемому URL. Именно это он сертифицирует, буквально. Поэтому, если вы хотите, чтобы сервер был доступен через HTTPS по своему новому имени, необходимо получить соответствующий сертификат.

Однако неважно, получите ли вы новый сертификат, действительный сразу для обоих доменов (в этом случае вы можете использовать ServerAlias), или у вас будут два отдельных сертификата и вы будете продолжать использовать текущий для старого имени (вам понадобятся два отдельных VirtualHost с идентичной конфигурацией, но это не большая проблема).

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

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

Теория

SSL-сертификаты подтверждают подлинность и целостность соединения между клиентом и сервером, и основной их функцией является удостоверение правильности доменного имени. Это означает, что когда браузер делает запрос на ‘https://nextname.example.com’, сертификат, который сервер предоставляет в ответ, должен включать это доменное имя в качестве полноправного участника. Если это условие не выполняется, пользователи будут получать сообщения об ошибке, такие как «Ваше соединение не является приватным».

Основные шаги для изменения имени сервера без нарушения работы старого имени:

  1. Создание нового сертификата: Это основной шаг, так как сертификат для current.example.com не будет действительным для nextname.example.com.

  2. Обновление конфигурации Apache: Добавление нового ServerAlias в Apache VirtualHost может быть одним из решений, но только в сочетании с корректным сертификатом. Ещё один подход — создание отдельного VirtualHost для каждого доменного имени.

Пример

Предположим, что у вас есть существующая конфигурация для current.example.com:

<VirtualHost *:443>
    ServerName current.example.com
    DocumentRoot "/var/www/html"
    SSLEngine on
    SSLCertificateFile "/etc/ssl/certs/current.crt"
    SSLCertificateKeyFile "/etc/ssl/private/current.key"
</VirtualHost>

Вы хотите добавить новый домен nextname.example.com. Для этого потребуется:

  • Получение сертификата для nextname.example.com, который может быть:
    • SAN-сертификатом (Subject Alternative Name), включающим оба домена. Это позволит одному сертификату обслуживать оба имени.
    • Отдельным сертификатом для каждого домена.
<VirtualHost *:443>
    ServerName current.example.com
    DocumentRoot "/var/www/html"
    SSLEngine on
    SSLCertificateFile "/etc/ssl/certs/both-domains.crt" # для SAN-сертификата
    SSLCertificateKeyFile "/etc/ssl/private/both-domains.key"
</VirtualHost>

<VirtualHost *:443>
    ServerName nextname.example.com
    DocumentRoot "/var/www/html"
    SSLEngine on
    SSLCertificateFile "/etc/ssl/certs/nextname.crt" # для отдельного сертификата
    SSLCertificateKeyFile "/etc/ssl/private/nextname.key"
</VirtualHost>

Применение

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

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

Конфигурация Apache

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

Тестирование и проверка

После внесения изменений рекомендуется протестировать конфигурацию. Для этого:

  • Проверьте конфигурацию Apache на наличие ошибок:
    apachectl configtest
  • Перезапустите Apache:
    sudo systemctl restart apache2
  • Проверьте доступность обоих доменов через браузер или инструменты командной строки (например, curl).

Обновление Redirect и DNS

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

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

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

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