Вопрос по apache, https, ruby-on-rails – Как отключить HTTP Strict Transport Security?

39

У меня было приложение Rails сconfig.force_ssl = true, но теперь я не хочу шифрование SSL, но мое приложение все еще перенаправляет на https. Я читал, что это проблема HTTP Strict Transport Security на Apache. Как я могу отключить это?

Ваш Ответ

4   ответа
69

а с тем фактом, что Rails отправляет заголовок HSTS.

В Chrome вы можете очистить состояние HSTS, зайдя вabout:net-internals, как описано вImperialViolet: пользовательский интерфейс HSTS в Chrome. Возможно, вам также придется очистить кеш, так какconfig.force_ssl = true также использует 301 (постоянное) перенаправление.

Кроме того, согласно этот ответ, вы также можете сделать так, чтобы ваше приложение отправляло заголовок STS с max-age = 0. В вашем контроллере:

response.headers["Strict-Transport-Security"] = 'max-age=0'
Должно быть задокументировано, что после того, как вы включили опцию 'force_ssl' в Rails, единственный способ отключить ее - это заставить всех ваших посетителей очистить кеш браузера. : Joe Van Dyk
Если бы это было не так, вы были бы уязвимы для взлома SSL, который HSTS предназначен для смягчения. Ничего общего с Rails. Ali
стоит упомянуть разработчиков :) Спасибо за этот ответ @ Bruno Stefan Hendriks
Это в спецификации HSTS: Tools.ietf.org / html / ... TheConstructor
это работа для вас с браузерами Chrome? wutzebaer
14

а предложения @ JoeVanDyk верны и могут применяться вне контекста Rails / Apache. Я использую PHP и Nginx. В моем случае PHP не имеет к этому никакого отношения, но вот шаги с Nginx:

//sorry here's the nginx.conf part first, can't figure out how to mix multi-line 
//code with an ordered list

server {
   #...
   #change:
   # add_header  Strict-Transport-Security "max-age=315360000; includeSubdomains";     
   #to:
   add_header  Strict-Transport-Security "max-age=0;";
   #...
}

очистить вашу "историю браузера". Чтобы уточнить предложение @ JoeVanDyk, я думаю, что вам нужно очистить «историю просмотров», потому что очистка кэша у меня не сработала (протестировано на Chrome / Firefox, пожалуйста, добавьте комментарии, если вы знаете больше).

файл nginx.conf (см. код выше)

restart сервер

[email protected]:~# /etc/init.d/nginx restart.

После этого вы можете вернуть nginxadd_header Strict.. командуй тем, что у тебя было раньше. Просто повторите шаги 1-3 снова.

Я должен добавить, что вам не нужно перезагружать, а перезагружать. Например./etc/init.d/nginx reload code ninja
1

время кеширования на 0, и если вы выключите его, вам придется оставить его на 0 на несколько недель, чтобы очистить браузеры клиентов. Если вам просто нужно очистить HSTS в Chrome (для вашего собственного браузера), вы можете использоватьchrome://net-internals/#hsts в адресной строке, чтобы очистить кэш для вашего сайта в вашем браузере. В сочетании с приведенным ниже «дверным проемом» это становится полезным.

Вы можете установить временные режимы HSTS, установив / подделав пользовательский заголовок => ключ. В основном, если существует специальный заголовок запроса, и он соответствует ключу, установите для HSTS время кеширования того, что вам нужно. Это позволит вам включить или отключить HSTS для всего трафика, кроме вас. Полезно для опробования HSTS перед глобальным включением (чтобы убедиться, что все ресурсы загружаются). Также полезно, если вы хотите временно очистить кэш клиента, пока что-то восстанавливается (оставляя место для тестирования).

Как вы устанавливаете «время кэширования»? Там нет варианта наchrome://net-internals/#hsts Pacerier
@ Pacerier Ах, хром может очистить HSTS, но не может установить время кеширования. Время кэширования исходит из заголовка HSTS origin / site. Отчасти это может выглядеть так:strict-transport-security:max-age=15552000 ... тебе нужно сказатьstrict-transport-security:max-age=0 чтобы отключить HSTS для клиентов и стереть их перенаправления (или разрешить им соединяться с недействительным SSL). dhaupin
Но как мог пользователь сам редактировать его на стороне клиента? Pacerier
@ Pacerier Хмм, я не уверен, что вы могли бы перехватить ответ от веб-сайта до того, как браузер установил его, а также включить / подделать этот заголовок. Честно говоря, я никогда не экспериментировал с этим, но это может быть осуществимо с помощью какого-то инструмента, может быть? dhaupin
1

что не могу удалить запись HSTS в Chrome, поскольку использую IP-адрес для разработки. Я не мог получитьchrome://net-internals/#hsts, чтобы удалить запись. , что Chrome хранит записи в ../AppData/local/Google/Chrome/User Data / Default / TransportSecurity, поэтому я просто удалил файл. Конечно, он удаляет все запросы HSTS, но я подозреваю, что они будут перестроены со временем.

Похожие вопросы