मैं एक ऐसी वेबसाइट होस्ट करना चाहता हूं, जिसे आईआईएस और एसएसएल के साथ आईआईएस और एसएसएल के साथ एक दूसरे स्तर के डोमेन (जैसे domain2.com, domain3.com) के तहत आने वाली कई वेबसाइटों के साथ सबडोमेनस (जैसे सबडोमेन.कॉम) को सुनना चाहिए।
उप-डोमेन वाली वेबसाइट के लिए मेरे पास एक वाइल्डकार्ड प्रमाणपत्र (* .domain.com) है और मेरे पास विशेष रूप से अन्य साइटों (domain2.com और domain3.com) के लिए भी प्रमाण पत्र हैं।
क्या इस तरह के सेटअप को एक ही IIS (यदि वह मायने रखता है, एक Azure Cloud Service वेब भूमिका में) पर होस्ट किया जा सकता है?
मुद्दा बिल्कुल वैसा ही है जैसा कि टिटोबॉफ़ ने यहां बताया है : सैद्धांतिक रूप से इसके लिए हमें SNI का उपयोग करके बाइंडिंग की आवश्यकता होगी, साथ ही डोमेन 2 / 3.com के लिए निर्दिष्ट होस्ट और फिर * .domain.com के लिए * होस्ट के साथ कैच-ऑल वेबसाइट। लेकिन व्यवहार में कोई फर्क नहीं पड़ता कि कैसे बाइंडिंग स्थापित की जाती है अगर कैच-ऑल वेबसाइट इस पर है, तो उसे domain2 / 3.com पर भी सभी अनुरोध प्राप्त होंगे (हालांकि माना जाता है कि यह केवल अंतिम उपाय के रूप में मेल खाता है)।
किसी भी सहायता की सराहना की जाएगी।
अभी भी अनसुलझी है
दुर्भाग्य से मैं इसे हल करने में सक्षम नहीं था: यह केवल बेहद जटिल तरीकों से हल करने योग्य प्रतीत होता है, जैसे कि एक सॉफ्टवेयर बनाना जो IIS और इंटरनेट के बीच बैठता है (इसलिए मूल रूप से एक फ़ायरवॉल) और आने वाले अनुरोधों को संशोधित करता है (SSL हैंडशेक होने से पहले! ) परिदृश्य की अनुमति देने के लिए। मुझे पूरा विश्वास है कि यह IIS के साथ संभव नहीं है, चाहे जो भी हो, देशी मॉड्यूल से भी नहीं।
मुझे स्पष्ट करना होगा: हम Azure Cloud Services का उपयोग करते हैं, इसलिए हमारे पास एक और अड़चन है कि हम कई IP पते का उपयोग नहीं कर सकते हैं (देखें: http://feedback.azure.com/forums/169386-cloud-services-web-and -वर्क-रोल / सुझाव / 1259311-एकाधिक-एसएसएल और डोमेन-टू-वन-ऐप )। यदि आप अपने सर्वर पर कई आईपी को इंगित कर सकते हैं, तो आपके पास यह समस्या नहीं है क्योंकि आप आईपी के लिए भी बाइंडिंग बना सकते हैं, और वे वाइल्डकार्ड बाइंडिंग के साथ मिलकर काम करेंगे। अधिक विशेष रूप से, आपको वाइल्डकार्ड साइट के लिए एक आईपी की आवश्यकता होती है (लेकिन चूंकि आपके पास एक अलग आईपी है अब आपको वाइल्डकार्ड होस्ट नाम बाइंडिंग कॉन्फ़िगर नहीं करना होगा) और अन्य सभी गैर-वाइल्डकार्ड वाले लोगों के लिए एक और आईपी।
वास्तव में हमारा वर्कअन एक गैर-मानक एसएसएल पोर्ट, 8443 का उपयोग था। इसलिए एसएनआई बाइंडिंग वास्तव में इस पोर्ट के लिए बाध्य है, इस प्रकार यह अन्य बाइंडिंग के साथ काम करता है। अच्छा नहीं है, लेकिन हमारे लिए एक स्वीकार्य समाधान है जब तक आप वेब भूमिकाओं के लिए कई आईपी का उपयोग नहीं कर सकते।
अब काम न करने वाला बाँध
पहला https बाइंडिंग एक साधारण प्रमाणपत्र के साथ SNI है, दूसरा SNI नहीं है, जिसमें वाइल्डकार्ड प्रमाणपत्र है।
Http साइट काम करती है, साथ ही SNI https साइट, लेकिन वाइल्डकार्ड बाइंडिंग वाला "HTTP एरर 503 है। सेवा अनुपलब्ध है।" (बिना किसी अन्य जानकारी के, कोई असफल अनुरोध अनुरेखण या इवेंट लॉग प्रविष्टि)।
अंत में यह मूल रूप से काम कर रहा है
टोबियास की तरह ईटीडब्ल्यू ट्रेस लॉग को सक्षम करने से पता चलता है कि मूल त्रुटि निम्नलिखित थी:
अनुरोध (अनुरोध आईडी 0xF500000080000008) कारण के कारण अस्वीकार कर दिया गया: UrlGroupLookupFailed।
जहाँ तक मैं समझता हूँ कि इसका मतलब है कि http.sys किसी भी उपलब्ध समापन बिंदु के अनुरोध को रूट करने में सक्षम नहीं है।
पंजीकृत समापन बिंदुओं की जाँच से netsh http show urlacl
पता चलता है कि पोर्ट 443 के लिए वास्तव में कुछ पंजीकृत था:
Reserved URL : https://IP:443/
User: NT AUTHORITY\NETWORK SERVICE
Listen: Yes
Delegate: No
SDDL: D:(A;;GX;;;NS)
इसे हटाने के साथ netsh http delete urlacl url=https://IP:443/
अंत में मेरे एसएसएल बंधन को सक्षम किया गया।
logman start httptrace -p Microsoft-Windows-HttpService 0xFFFF -o httptrace.etl -ets
2) 503 रिक्वेस्ट 3) स्टॉप ट्रेस लॉग। रन: logman stop httptrace -ets
4) फाइल में ट्रेस लॉग लिखें। रन: tracerpt.exe httptrace.etl -of XML -o httptrace.xml
5) xml फ़ाइल में 503 के कारण की जाँच करें और इसे यहाँ पोस्ट करें।