Здравствуйте,
Наш сайт должен работать по протоколам HTTP и HTTPS. Нам необходимо обеспечить безопасность куки (_forum_session). Отсутствует флаг Secure, установлен только HttpOnly. Как добавить флаг Secure?
Спасибо.
Здравствуйте,
Наш сайт должен работать по протоколам HTTP и HTTPS. Нам необходимо обеспечить безопасность куки (_forum_session). Отсутствует флаг Secure, установлен только HttpOnly. Как добавить флаг Secure?
Спасибо.
Вы должны настроить свой сайт для работы только через HTTPS.
В коде Discourse нет способа внести изменения?
Привет, @mevaha
На протяжении многих лет в веб-разработке сложилась тенденция использовать исключительно HTTPS.
Раньше это было проблемой, пока такие организации, как Let’s Encrypt (LE), не начали бесплатно выдавать SSL-сертификаты и не предоставили надежный механизм для их управления.
При использовании LE (certbot) для настройки сертификатов на вашем сайте автоматически настраиваются как HTTP, так и HTTPS, а весь HTTP-трафик перенаправляется на HTTPS.
Конечно, можно найти способ запустить Discourse только через HTTP, но это не поддерживается, за исключением среды разработки Discourse. Без HTTPS вся информация о входе пользователей, включая пароли, передавалась бы по сети в незашифрованном виде. Это НЕ поддерживается в производственной среде.
Представьте это так: HTTPS — это как использование ремней безопасности в автомобиле. Люди, которые хотят ездить без ремней, делают это на свой страх и риск, поэтому производители автомобилей не выпускают машины без ремней безопасности.
То же самое касается и Discourse. Discourse разработан для безопасной работы в производственной среде, поэтому поддерживаемая версия Discourse в продакшене использует HTTPS.
Надеюсь, это поможет.
Извините, что не смог быть более полезным.
Спасибо @neounix. Наша проблема заключается в том, что SSL-сертификат для HTTPS управляется балансировщиком нагрузки, и между Discourse и балансировщиком нагрузки открыт только порт 80. Мы пытались перенаправить HTTP на HTTPS, но без успеха. Не могли бы вы поделиться со мной конфигурационным файлом куки в Discourse?
Спасибо
Привет, @mevaha!
Если это так, то, скорее всего, перед вашим балансировщиком нагрузки (или в его составе) находится обратный прокси-сервер.
Позвольте объяснить.
Обратный прокси-сервер (вместе с балансировщиком нагрузки, если он у вас есть) взаимодействует с Discourse на бэкенде по протоколу HTTP.
Так что вы правы: Discourse общается только по HTTP, но только с обратным прокси-сервером, а не с внешним миром.
Схема выглядит следующим образом:
ПОЛЬЗОВАТЕЛИ СЕТИ <-----> HTTPS <-----> ОБРАТНЫЙ ПРОКСИ-СЕРВЕР <----> HTTP <----> БАЛАНСИРОВЩИК НАГРУЗКИ <----> DISCOURSE (DOCKER)
Таким образом, вы можете открыть контейнер Docker с DISCOURSE на порту 80 (только HTTP), как вы и упоминали.
Однако на стороне, доступной из сети, необходим обратный прокси-сервер, который пересылает запросы HTTPS на бэкенд по протоколу HTTP.
Ваш обратный прокси-сервер (вместе с балансировщиком нагрузки), если он настроен правильно, обеспечит корректную передачу HTTP-куки и заголовков в обоих направлениях.
Надеюсь, это поможет.
Если у вас возникнут дополнительные вопросы, пожалуйста, задавайте их.
Обратите внимание: если вы предоставите точные технические детали вашей архитектуры, нам будет гораздо проще помочь вам, поскольку у нас нет приложения с кристаллическим шаром ![]()
Огромное спасибо @neounix