सर्वर त्रुटि से पहले HTTPS से HTTP तक रीडायरेक्ट कैसे करें?


10

मैं एक एसएसएल प्रमाणपत्र के साथ एक वेबसाइट संचालित करता था, लेकिन एसएसएल प्रमाण पत्र का उपयोग करना बंद कर दिया है। समस्या यह है कि वेबसाइट के अधिकांश बाहरी लिंक https: // उपसर्ग का उपयोग करते हैं।

मैंने .htaccess फ़ाइल में http: // से http: // की कोशिश की है:

RewriteEngine On

RewriteCond %{HTTPS} on
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI}

लेकिन ऐसा लगता है, जैसा कि कहीं और बताया गया है, कि सर्वर रीडायरेक्ट को सक्रिय करने से पहले प्रमाणपत्र को पुनः प्राप्त करने की कोशिश कर रहा है। इसलिए, रीडायरेक्ट पूरा होने से पहले एक त्रुटि दिखाई जाती है। त्रुटि या तो एक चेतावनी है कि प्रमाण पत्र की समय सीमा समाप्त हो गई है, या यदि मैं प्रमाणपत्र हस्ताक्षर अनुरोध को हटाता हूं, तो एक त्रुटि जिसे एसएसएल ने एक रिकॉर्ड प्राप्त किया जो अधिकतम स्वीकार्य लंबाई से अधिक था।

क्या आने वाले लिंक को ठीक से पुनर्निर्देशित करने की अनुमति देने का कोई तरीका है?


1
किसी भी HTTP अनुरोधों को लेने से पहले SSL पर बातचीत की जाती है, जैसा कि मुझे लगता है कि आपने पता लगा लिया है। मुझे लगता है कि आपको इस तरह से काम करने में समस्या हो रही है जैसे आप चाहते हैं, लेकिन मैं सर्वरफॉल्ट.कॉम पर माइग्रेट करने के लिए मतदान कर रहा हूं अगर किसी के पास बेहतर जवाब है।
माइकल

ऐसा लगता है कि यह मुश्किल से प्राप्त हो सकता है। यह इंटरनेट के आसपास निर्मित लिंक को खोने के लिए एक वास्तविक बुमेर है, और इससे भी बदतर है कि आगंतुकों को यह सोचने के लिए कि साइट से समझौता किया गया है या गायब हो गया है।

जवाबों:


16

Http और https के बीच अंतर यह है कि https अनुरोध ssl-एन्क्रिप्टेड कनेक्शन पर भेजे जाते हैं। ब्राउज़र को http अनुरोध भेजने से पहले ब्राउज़र और सर्वर के बीच ssl-एन्क्रिप्टेड कनेक्शन स्थापित किया जाना चाहिए।

Https अनुरोध वास्तव में http अनुरोध हैं जो एक ssl एन्क्रिप्टेड कनेक्शन पर भेजे जाते हैं। यदि सर्वर ssl एन्क्रिप्टेड कनेक्शन स्थापित करने के लिए खारिज कर देता है तो ब्राउज़र के पास अनुरोध भेजने के लिए कोई कनेक्शन नहीं होगा। ब्राउज़र और सर्वर में एक दूसरे से बात करने का कोई तरीका नहीं होगा। ब्राउज़र उस url को भेजने में सक्षम नहीं होगा जिसे वह एक्सेस करना चाहता है और सर्वर किसी अन्य url पर रीडायरेक्ट के साथ प्रतिक्रिया करने में सक्षम नहीं होगा।

इसलिए यह संभव नहीं है। अगर आप https लिंक का जवाब देना चाहते हैं, तो आपको ssl सर्टिफिकेट चाहिए।


4

नहीं, अगर किसी वास्तविक प्रमाणपत्र के बिना https से http तक रीडायरेक्ट करना संभव था, तो यह एक बड़ा सुरक्षा दोष होगा।

एक अपराधी पर विचार करें जो किसी भी तरह से साइट के लिए वास्तविक https प्रमाणपत्र की आवश्यकता के बिना असुरक्षित सुरक्षित कनेक्शन के लिए बैंक सुरक्षित सर्वर को पुनर्निर्देशित करने में सक्षम है, यह अपराधी को उपयोगकर्ता के बारे में जानने के बिना कनेक्शन को अपहरण करने की अनुमति देगा।

एकमात्र समाधान जो मैं देख सकता हूं वह यह है कि एक सस्ते प्रमाण पत्र प्राप्त करें और फिर उन बाहरी लिंक के लिए नियमित साइट पर HTTPS साइट (जो एक वैध प्रमाण पत्र के बिना उपयोगकर्ता तक नहीं पहुंच सकता है) से एक सामान्य रीडायरेक्ट करें।


सही है, यह इस तरह से बेहतर है। बहुत बुरा है कि साइट स्वामी के रूप में स्वीकृत ओवरराइड को सेटअप करने का कोई तरीका नहीं है।

-2

आपको अपने .htaccess में बनाना चाहिए

ErrorDocument 500 http://anotherserer.com/errorPage.php

सलाह के लिये धन्यवाद। यहां तक ​​कि .htaccess के साथ, यह इस विशेष त्रुटि के लिए 500 त्रुटि के लिए दर्ज किए गए पृष्ठ का उपयोग नहीं कर रहा है। ऐसा लगता है कि, शायद, प्रारंभिक त्रुटि के कारण .htaccess में कुछ भी सक्रिय नहीं किया जा रहा है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.