Как отключить строгую транспортную безопасность HTTP?

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

4 ответов


это не проблема с Apache, но с тем, что Rails отправляет заголовок HSTS.

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

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

response.headers["Strict-Transport-Security"] = 'max-age=0'

просто хотел указать на ответ @Bruno и предложения @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;";
   #...
}
  1. очистить "историю браузера". Чтобы уточнить предложение @JoeVanDyk, я думаю, вам нужно очистить "историю просмотра", потому что очистка кэша не сработала для меня (протестировано на Chrome / Firefox, пожалуйста, добавьте комментарии если вы знаете больше).

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

  3. перезагрузка сервера

    root@ip-xxx-xxx-xxx:~# /etc/init.d/nginx restart.

после этого вы можете вернуть nginx add_header Strict.. команда к тому, что вы ранее имели. Просто повторите шаги 1-3 еще раз.


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

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


Я обнаружил, что не могу удалить запись HSTS в Chrome, поскольку я использовал IP-адрес для разработки. Я никак не мог понять!--0--> удалить запись. Я обнаружил, что Chrome хранит записи ../Папке AppData/местного/Гугл/Хром/пользовательские данные/значения по умолчанию/TransportSecurity поэтому я просто удалил файл. Он, конечно, удаляет все запросы HSTS, но я подозреваю, что они будут перестроены с течением времени.