2013-07-21 5 views
11

मैंने हाल ही में हेरोकू पर चल रहे एक रेल ऐप के लिए डोमेन बदल दिया है। मैंने मूल को नए पर रीडायरेक्ट किया, और पिछले कुछ महीनों से दोनों पर एसएसएल चला रहा है। मैंने एसएसएल को मूल डोमेन से हटाने की कोशिश की क्योंकि यह सब कुछ रीडायरेक्ट करता है।एक हेरोकू ऐप के लिए एसएसएल को अक्षम करना

मैं सब कुछ मैंने सोचा था कि मैं चाहिए:

  • बंद एसएसएल अनुप्रयोग में config.force_ssl = false साथ production.rb में
  • बदला गया डीएनएस ALIAS और CNAME निकला बात करने के लिए "myapp.herokuapp.com"
  • को
  • निकाला गया एसएसएल endpoint और प्रमाणपत्र

अगर मैं myapp.herokuapp.com पर जाते हैं, सब कुछ ठीक है, लेकिन अगर मैं myapp.com जाते हैं, या www.myapp.com यह स्वचालित रूप से मेरे लिए लेने की कोशिश करता सुरक्षित साइट का संस्करण, https://myapp.com, और मुझे अपने ब्राउज़र से मानक सुरक्षा त्रुटि चेतावनी मिलती है।

क्या मुझे कुछ याद आ रही है? क्या यह एक कैशिंग मुद्दा है? क्या इसमें बस DNS परिवर्तन के लिए समय लगता है? मैंने कुछ मशीनों/ब्राउज़रों पर कोशिश की है, और यह मुद्दा उन सभी में सुसंगत है।

सबसे खराब मामला, मैं निश्चित रूप से एसएसएल एंडपॉइंट को वापस जोड़ सकता हूं, लेकिन यह ओवरकिल जैसा लगता है।

उत्तर

12

config.force_ssl = trueStrict Transport Security हेडर (HSTS) को एक वर्ष के max-age के साथ सक्षम बनाता है। यह issue देखें। ऐसे हेडर ब्राउज़र को मजबूर करते हैं जो एक वर्ष के लिए HTTPS पर सर्वर से संपर्क करने के लिए इसका समर्थन करते हैं। यह हमलों को रोकने के लिए है जिसमें एक मध्य में आदमी HTTP से HTTPS कनेक्शन को डाउनग्रेड करता है।

HSTS के साथ परोसा गया उत्पादन साइटों के लिए HTTPS से बाहर निकलना बहुत आसान नहीं है। आपको अपनी साइट को HTTPS पर सेवा देना चाहिए और एक वर्ष सेटिंग रीसेट करने के लिए max-age=0 के साथ HSTS शीर्षलेख वापस करना चाहिए। समस्या यह तय करना है कि आपको HTTPS को कितनी देर तक रखने की आवश्यकता है। पूरी तरह से यह सुनिश्चित करने के लिए कि सभी क्लाइंट स्विच किए गए हैं, आपको इसे एक वर्ष के लिए करना चाहिए। आप इसे कम अवधि के लिए करने का निर्णय ले सकते हैं, लेकिन उन ग्राहकों के लिए साइट तोड़ने के जोखिम पर जो अक्सर यात्रा कर रहे हैं।

+0

ओह, वाह जो इसे समझाता है। विस्तृत प्रतिक्रिया के लिए धन्यवाद! – Lev

+0

एफवाईआई, मैंने कॉन्फ़िगरेशन को बदलने के बाद एसएसएल का उपयोग करना भूलने के लिए निम्न ब्राउज़र को भी उपयोगी पाया: https://support.mozilla.org/en-US/questions/1027355। यह निश्चित रूप से केवल आपके अपने ब्राउज़र के लिए काम करता है (लेकिन मेरे मामले में मैंने अभी तक किसी के साथ यूआरएल साझा नहीं किया है)। इसलिए यदि आपके पास पहले से ही आपकी वेबसाइट पर आगंतुक थे, तो इससे उनकी मदद नहीं होगी (जब तक वे अपने कंप्यूटर पर ऐसा नहीं करते)। – 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

मेरे लिए काम नहीं करते हैं। "हमें खेद है, लेकिन कुछ गलत हो गया।" मेरे पेज पर दिखाया गया। –

संबंधित मुद्दे