2013-07-21 17 views
11

Kısa bir süre önce Heroku üzerinde çalıştığım bir Rails uygulaması için etki alanını değiştirdim. Orijinali yenisine yönlendirdim ve son birkaç ay boyunca her ikisinde de SSL kullanıyor. Tümü yönlendirme yaptığından, SSL'yi orijinal alandan kaldırmayı denedim. Bir Heroku Uygulaması için SSL'yi Devre Dışı Bırakma

her şeyi ben gerektiğini düşündüm vermedi:

  • işaret etmek production.rb içinde config.force_ssl = false ile app
  • Değiştirilen DNS ALIAS ve CNAME'ini SSL kapattım "myapp.herokuapp.com"
  • için
  • kaldırıldı SSL bitiş noktası ve certs

ben myapp.herokuapp.com giderseniz, her şey yolunda, ama myapp.com giderseniz veya www.myapp.com otomatik beni almaya çalışır güvenli Sitenin sürümü, https://myapp.com ve tarayıcımdan standart güvenlik hatası uyarısı alıyorum.

Bir şey mi eksik? Bu bir önbellekleme sorunu mu? DNS değişikliğinin devreye girmesi zaman alıyor mu? Birkaç makinede/tarayıcıda denedim ve sorun tümünde tutarlı.

En kötü durum, ben kesinlikle SSL Endpoint'i tekrar ekleyebilirim ama overkill gibi görünüyor.

cevap

12

config.force_ssl = true bir yıl max-age ile Strict Transport Security başlığı (HSTS) etkinleştirir. Bkz. issue. Böyle bir başlık, bir yıl boyunca HTTPS üzerinden sunucuyla iletişim kurmasını destekleyen tarayıcıları zorlar. Bu, bir insanın ortadaki HTTPS bağlantısının HTTP'ye düştüğü saldırıları önlemektir.

HSTS ile birlikte gönderilen üretim siteleri için HTTPS'den çıkmak çok kolay değil. Sitenizi HTTPS üzerinden sunmalı ve bir yıl ayarını sıfırlamak için max-age=0 ile HSTS başlığını döndürmelisiniz. Sorun, HTTPS'yi ne kadar süreyle tutmanız gerektiğine karar vermektir. Tüm müşterilerin değiştiğinden kesinlikle emin olmak için bir yıl boyunca yapmalısınız. Daha kısa bir süre için yapmaya karar verebilirsiniz, ancak siteyi seyrek olarak ziyaret eden müşteriler için kırılma riskiyle karşı karşıya kalabilirsiniz.

+0

Oh, bunu açıklayan vay. Detaylı cevap için teşekkürler! – Lev

+0

FYI, tarayıcımın, yapılandırmayı değiştirdikten sonra ssl'yi kullanmayı unutması için aşağıdakileri de yararlı buldum: https://support.mozilla.org/en-US/questions/1027355. Bu, elbette sadece kendi tarayıcınız için çalışır (ancak benim durumumda, URL'yi henüz kimseyle paylaşmadım). Bu nedenle, web sitenize zaten ziyaret etmişseniz, bu onlara yardımcı olmaz (bilgisayarlarında aynı şeyi yapmadıkça). – Nick

6

Jan'in söylediklerine ek olarak, hile yapmak için yaptığım şey burada. application_controller.rb olarak

:

before_filter :expire_hsts 

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

config.force_ssl = false 

Önbelleği web tarayıcınızın ve bu kadar production.rb

içinde!

+0

benim için çalışmıyor. "Üzgünüz, yanlış giden birşeyler oldu." sayfamda gösteriliyor. –

İlgili konular