2013-07-21 3 views
11

Недавно я изменил домен для приложения Rails. У меня работает на Heroku. Я перенаправил оригинал на новый, и за последние пару месяцев был запущен SSL на обоих. Я попытался удалить SSL из исходного домена, так как все, что он делает, перенаправляется.Отключение SSL для приложения Heroku

Я сделал все, что я должен:

  • Выключено SSL в приложении с config.force_ssl = false в production.rb
  • Changed DNS ALIAS и CNAME, чтобы указать на "myapp.herokuapp.com"
  • Убрана SSL конечной точки и сертификаты

Если я иду в myapp.herokuapp.com, все нормально, но если я иду в myapp.com или www.myapp.com он автоматически пытается взять меня к безопасный версии сайта, https://myapp.com, и я получаю стандартное предупреждение об ошибке безопасности из моего браузера.

Я что-то упустил? Это проблема кеширования? Требуется ли просто время для изменения DNS? Я пробовал несколько машин/браузеров, и проблема была последовательной во всех них.

Худший случай, я могу определенно добавить конечную точку SSL снова, но это похоже на излишний.

ответ

12

config.force_ssl = true включает Strict Transport Security заголовок (HSTS) с max-age года. См. Это issue. Такой заголовок заставляет браузеры поддерживать его, чтобы связаться с сервером через HTTPS в течение одного года. Это делается для предотвращения атак, при которых человек в среднем понижает HTTPS-соединение с HTTP.

Выйти из HTTPS для производственных площадок, которые были поданы с HSTS, не очень просто. Вы должны сохранить свой сайт на HTTPS и вернуть HSTS заголовок с max-age=0, чтобы сбросить настройки за один год. Проблема заключается в том, чтобы решить, как долго вам нужно поддерживать HTTPS. Чтобы быть абсолютно уверенным, что все клиенты переключаются, вы должны сделать это в течение одного года. Вы можете решить сделать это в течение более короткого периода времени, но рискуете повредить сайт для клиентов, которые посещают нечасто.

+0

О, ничего себе, что объясняет это. Спасибо за подробный ответ! – Lev

+0

FYI, я нашел следующее также полезным, чтобы заставить моего браузера забыть использовать ssl после изменения конфигурации: https://support.mozilla.org/en-US/questions/1027355. Это, конечно, работает только для вашего собственного браузера (но в моем случае я еще не поделился URL с кем-либо еще). Поэтому, если у вас уже есть посетители вашего сайта, это не поможет им (если они не сделают то же самое на своем компьютере). – Nick

6

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

В application_controller.rb:

before_filter :expire_hsts 

[...] 
private 
    def expire_hsts 
    response.headers["Strict-Transport-Security"] = 'max-age=0' 
    end 

В production.rb

config.force_ssl = false 

Очистить кэш вашего веб-браузера, и это все!

+0

не работаю для меня. "Нам очень жаль, но что-то пошло не так." показано на моей странице. –

Смежные вопросы