2012-05-17 13 views
38

मेरे पास config.force_ssl = true के साथ एक रेल एप्लिकेशन था, लेकिन अब मुझे एसएसएल एन्क्रिप्शन नहीं चाहिए, लेकिन मेरा ऐप अभी भी https पर रीडायरेक्ट कर रहा है। मैंने पढ़ा यह अपाचे पर एक HTTP सख्त परिवहन सुरक्षा समस्या है। मैं इसे कैसे अक्षम कर सकता हूं?HTTP सख्त परिवहन सुरक्षा को अक्षम कैसे करें?

उत्तर

68

यह अपाचे के साथ कोई समस्या नहीं है, लेकिन तथ्य यह है कि रेल एक एचएसटीएस हेडर भेजता है।

क्रोम में, आप about:net-internals में जाकर एचएसटीएस स्थिति को साफ़ कर सकते हैं, जैसा कि ImperialViolet: HSTS UI in Chrome में वर्णित है। आपको कैश को भी साफ़ करना पड़ सकता है, क्योंकि config.force_ssl = true भी 301 (स्थायी) पुनर्निर्देशन का उपयोग करता है।

इसके अलावा, this answer के अनुसार, आप अपने आवेदन को अधिकतम आयु = 0 के साथ एक एसटीएस हेडर भेज सकते हैं। अपने नियंत्रक में:

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

यह दस्तावेज किया जाना चाहिए कि एक बार जब आप रेल में 'force_ssl' विकल्प सक्षम करते हैं, तो इसे अक्षम करने का एकमात्र तरीका यह है कि आपके सभी आगंतुक अपने ब्राउज़र कैश को साफ़ कर दें।:( –

+10

यदि यह मामला नहीं था, तो आप एसएसएल स्ट्रिपिंग के लिए कमजोर होंगे जो एचएसटीएस को कम करने के लिए डिज़ाइन किया गया है। रेल के साथ कुछ भी नहीं करना। – Ali

+0

हालांकि डेवलपर्स के लिए इसका उल्लेख करना उचित होगा :) इस उत्तर के लिए धन्यवाद @ ब्रूनो –

13

बस @ ब्रूनो के जवाब और @ JoeVanDyk की सुझाव सत्य हैं और रेल/अपाचे के संदर्भ से परे लागू किया जा सकता का कहना चाहते थे। मैं PHP और Nginx का उपयोग कर रहा हूँ। पीएचपी मेरे मामले में यह कोई लेना देना नहीं है, लेकिन यहां 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. स्पष्ट अपने "ब्राउज़र इतिहास"। @ जोवन डिक के सुझाव पर स्पष्टीकरण के लिए, मुझे लगता है कि आपको "ब्राउज़िंग इतिहास" को साफ़ करने की आवश्यकता है क्योंकि कैश साफ़ करना मेरे लिए काम नहीं करता है (क्रोम/फ़ायरफ़ॉक्स पर परीक्षण किया गया है, अगर आप और जानते हैं तो कृपया टिप्पणी जोड़ें)।

  2. nginx.conf फ़ाइल (ऊपर कोड देखें)

  3. पुनः आरंभ सर्वर

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

इस के बाद, आप क्या आप पहले से था nginx add_header Strict.. आदेश लौट सकते हैं। बस सुनिश्चित करें कि आप चरण 1-3 दोबारा दोहराएं।

+1

मुझे यह जोड़ना चाहिए कि आपको पुनरारंभ करने की आवश्यकता नहीं है, बल्कि पुनः लोड करना चाहिए। जैसे '/etc/init.d/nginx reload' –

1

चित्रित आईडी इस पर थोड़ा सा विचार पेश करती है। कैश टाइम को 0 पर सेट करना सबसे अच्छा शर्त है और यदि आप इसे बंद करते हैं तो आपको क्लाइंट ब्राउज़र को साफ़ करने के लिए इसे सप्ताहों में 0 पर छोड़ना होगा। यदि आपको क्रोम (अपने ब्राउज़र के लिए) में एचएसटीएस को साफ़ करने की आवश्यकता है तो आप अपने विशिष्ट ब्राउज़र पर अपनी साइट के कैश को साफ़ करने के लिए पता बार में chrome://net-internals/#hsts का उपयोग कर सकते हैं। नीचे "द्वार" के साथ संयुक्त यह उपयोगी हो जाता है।

आप कस्टम हेडर => कुंजी को सेट/स्पूफिंग करके अस्थायी एचएसटीएस मोड सेट कर सकते हैं। असल में यदि कोई विशेष अनुरोध हेडर मौजूद है, और यह एक कुंजी से मेल खाता है, तो आपको जो भी चाहिए उसे कैश टाइम के साथ एचएसटीएस सेट करें। इससे आप सभी ट्रैफिक के लिए एचएसटीएस चालू या बंद कर सकते हैं। वैश्विक स्तर पर सक्षम होने से पहले एचएसटीएस की कोशिश करने के लिए उपयोगी (यह सुनिश्चित करने के लिए कि सभी संपत्तियां लोड हो रही हैं)। अगर आप कुछ मरम्मत की जाती है (आपको परीक्षण के लिए कमरा छोड़कर) अस्थायी रूप से क्लाइंट कैश को साफ़ करना चाहते हैं तो भी उपयोगी।

+0

आप" कैश टाइम "कैसे सेट करते हैं? 'Chrome: // net-internals/# hsts' – Pacerier

+0

पर कोई विकल्प नहीं है @Pacerier Ah क्रोम एचएसटीएस को साफ़ कर सकता है लेकिन यह कैश टाइम सेट नहीं कर सकता है। कैश का समय मूल/साइट एचएसटीएस हेडर से आता है। इसका एक हिस्सा ऐसा दिखाई दे सकता है: 'सख्त परिवहन-सुरक्षा: अधिकतम आयु = 15552000' ... मूल रूप से आपको ग्राहकों के लिए एचएसटीएस अक्षम करने के लिए' सख्त परिवहन-सुरक्षा: अधिकतम आयु = 0' कहने की आवश्यकता है और अपने रीडायरेक्ट को मिटा दें (या, उन्हें अमान्य SSL से कनेक्ट करने दें)। – dhaupin

+0

लेकिन उपयोगकर्ता स्वयं क्लाइंट पक्ष पर इसे कैसे संपादित कर सकता है? – Pacerier

0

मुझे पता चला कि मैं क्रोम में एचएसटीएस प्रविष्टि को हटा नहीं सकता क्योंकि मैं विकास के लिए आईपी एड्रेस का उपयोग कर रहा था। प्रवेश को हटाने के लिए मुझे chrome://net-internals/#hsts नहीं मिल सका। मैंने पाया कि क्रोम प्रविष्टियों को स्टोर करता है ../AppData/local/Google/Chrome/User डेटा/डिफ़ॉल्ट/परिवहन सुरक्षा इसलिए मैंने अभी फ़ाइल को हटा दिया है। यह निश्चित रूप से सभी एचएसटीएस अनुरोधों को हटा देता है, लेकिन मुझे संदेह है कि उन्हें समय के साथ पुनर्निर्मित किया जाएगा।

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