Первичное перенаправление с HTTP на HTTPS происходит на другой хост, что предотвращает HSTS.

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

https://developer.mozilla.org/en-US/observatory/analyze?host=besch.ws

Тест отмечает, что сайт имеет проблему с перенаправлением: начальное перенаправление с HTTP на HTTPS происходит на другой хост, что препятствует HSTS.

В Apache я делаю следующее:

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName www.besch.ws
    ServerAlias besch.ws

    RedirectPermanent / https://www.besch.ws/
    ...
</VirtualHost>

<VirtualHost *:443>
    ServerAdmin [email protected]
    ServerName besch.ws

    RedirectPermanent / https://www.besch.ws/
    ...
</VirtualHost>

Виртуальный хост 443 для www.besch.ws — это там, где настроен сайт.

Я пытался добавить следующее в два виртуальных хоста, упомянутых здесь.

<IfModule mod_headers.c>
    Header always set Strict-Transport-Security "max-age=63072000"
</IfModule>

https://developer.mozilla.org/en-US/docs/Web/Security/Practical_implementation_guides/TLS#http_redirection предлагает сделать следующее

<VirtualHost *:80>
  ServerName site.example.org
  Redirect permanent / https://site.example.org/
</VirtualHost>

Вот что у меня есть и причина, по которой я спрашиваю здесь. Как мне исправить это? Очевидно, мне на данный момент не видно очевидного. Буду благодарен за любую помощь. Спасибо.

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

Проблема с перенаправлением с HTTP на HTTPS на разные хосты является достаточно распространенной и может препятствовать корректной работе HSTS (HTTP Strict Transport Security). Рассмотрим, как можно её решить, опираясь на предоставленную информацию.

1. Понимание проблемы

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

2. Анализ конфигурации Apache

Давайте проанализируем предоставленный вами конфигурационный файл Apache:

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName www.besch.ws
    ServerAlias besch.ws

    RedirectPermanent / https://www.besch.ws/
    ...
</VirtualHost>

<VirtualHost *:443>
    ServerAdmin [email protected]
    ServerName besch.ws

    RedirectPermanent / https://www.besch.ws/
    ...
</VirtualHost>

Ваша текущая конфигурация включает перенаправление с HTTP (порт 80) на HTTPS (порт 443) на разные хосты — это и вызывает проблему с HSTS. Кроме того, возможная настройка заголовка HSTS в вашем конфигурационном файле выглядит следующим образом:

<IfModule mod_headers.c>
    Header always set Strict-Transport-Security "max-age=63072000"
</IfModule>

3. Рекомендации по исправлению

Шаг 1: Объединение хостов

Убедитесь, что ваше перенаправление осуществляется с одним хоста на тот же хост. В данном примере это означает, что все перенаправления с http://besch.ws и http://www.besch.ws должны вести на один конечный URL, предпочтительно на HTTPS.

Измените перенаправления следующим образом:

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName besch.ws
    ServerAlias www.besch.ws

    RedirectPermanent / https://besch.ws/
</VirtualHost>

<VirtualHost *:443>
    ServerAdmin [email protected]
    ServerName besch.ws
    ServerAlias www.besch.ws

    RedirectPermanent / https://besch.ws/
    ...
</VirtualHost>

Шаг 2: Убедитесь в правильной настройке HSTS

После того как перенаправление будет настроено, добавьте заголовок HSTS в секцию <VirtualHost *:443> так, чтобы он применялся ко всем запросам на HTTPS:

<VirtualHost *:443>
    ServerAdmin [email protected]
    ServerName besch.ws
    ServerAlias www.besch.ws

    Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
    ...
</VirtualHost>

4. Проверка и тестирование

После внесения изменений обязательно перезагрузите сервер Apache, чтобы изменения вступили в силу:

sudo systemctl restart apache2

Затем протестируйте конфигурацию с помощью инструмента, например, Mozilla Observatory, чтобы убедиться, что HSTS работает корректно и следуйте рекомендациям для диагностики.

Заключение

Правильно настроенное перенаправление и применение заголовка HSTS — это ключевые шаги на пути к повышению безопасности вашего веб-сайта. Объединение перенаправлений на один и тот же хост позволит избежать проблем с HSTS и повысит уровень доверия пользователей к вашему ресурсу.

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

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