मैं SSL और SNI समर्थन के बारे में nginx को कॉन्फ़िगर करने के साथ फंस गया हूं।
मेरे मामले को सरल बनाने के लिए, मान लें कि मेरे पास दो डोमेन हैं, foo.comऔर bar.com। मेरे पास केवल एक आईपी है और दोनों डोमेन इस पर मैप किए जाते हैं। मैं के foo.comमाध्यम से उपलब्ध होना चाहता हूं https, लेकिन नहीं bar.com। बाद वाला बस पोर्ट 443 पर अनुपलब्ध होना चाहिए। मुझे पता है कि यह सादे एसएसएल के साथ संभव नहीं है, लेकिन मुझे बताया गया था कि मैं इन दिनों एसएनआई पर सुरक्षित रूप से भरोसा कर सकता हूं। इसलिए मुझे लगता है कि मेरा ब्राउज़र (क्रोम) उस वेबसाइट के डोमेन को भेजता है जो एसएसएल इनिट अनुरोध के साथ एक्सेस करना चाहता है।
यदि मैं bar.comपहुंचता हूं , तो nginx के लिए जारी किए गए कॉन्फ़िगर किए गए प्रमाणपत्र का उपयोग करता है bar.com, एकदम सही। यदि मैं पहुंचता हूं https://foo.com, जिसके लिए कोई listen *:443निर्देश वास्तव में मौजूद नहीं है, तो nginx भी प्रमाण पत्र के साथ उत्तर देता है bar.com, इस प्रकार क्रोम एक प्रमाणपत्र अपवाद को फेंक देता है। मैंने SSL सुनने के निर्देश को कॉन्फ़िगर करने का प्रयास किया foo.comऔर बिना किसी सफलता के साथ vhost में निम्नलिखित कोड जोड़ा:
if ($server_port = 443) {
return 444;
}
यह अब गलत प्रमाणपत्र भेजता है और केवल बाद में कनेक्शन से इनकार करता है।
क्या यह संभव है कि किसी भी SSL उत्तर को ब्राउज़र में वापस भेजने से पहले nginx को कनेक्शन बंद कर दिया जाए अगर nginx को अनुरोधित डोमेन के लिए एक उपयुक्त प्रमाणपत्र नहीं मिल सकता है?