Вопрос или проблема
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 и повысит уровень доверия пользователей к вашему ресурсу.