IIS7: SSL प्रमाणपत्र और पोर्ट 443 के साथ साइट पर होस्ट नाम सेट नहीं कर सकता है


47

IIS7 के साथ Win 2008 SP2 मशीन पर विचार करें। कार्य इस मशीन पर एक और केवल साइट के लिए एक प्रमाण पत्र और होस्ट नाम लागू करना है। साइट के होस्ट हेडर होने चाहिएabc.123.example.com

पहला चरण .pfx को पर्सनल स्टोर में स्थापित कर रहा था, जो सफल था।

IIS7 उपलब्ध के रूप में प्रमाण पत्र पाता है, लेकिन एक मेजबान नाम के प्रवेश की अनुमति नहीं देगा। होस्ट नाम टेक्स्टबॉक्स हमेशा मेरे प्रमाणपत्र का चयन करने से पहले ही अक्षम / तैयार हो जाता है। मैंने डिफ़ॉल्ट पोर्ट 80 बाइंडिंग को भी हटा दिया है।

साइट बाइंडिंग

प्रश्न: मैं इस साइट के लिए होस्ट नाम कैसे सेट कर सकता हूं? क्या यह इस वाइल्डकार्ड प्रमाणित होने की बात है? मैं समझता हूं कि SSL अनुरोध वेब सर्वर में आता है, और पैकेट में होस्ट हेडर एन्क्रिप्ट किया गया है। तब IIS6 होस्ट हेडर को निर्दिष्ट करने की अनुमति क्यों देगा, लेकिन IIS7 नहीं?

अद्यतन: प्रमाणपत्र समस्या का हिस्सा नहीं है। मैंने मशीन पर एक नई साइट बनाई है, और https बाइंडिंग चुनते समय, होस्ट नाम टेक्स्टबॉक्स अक्षम है।

जवाबों:


32

आप इसे UI से नहीं कर सकते, आपको इसे कमांड लाइन से करना होगा। यहाँ प्रक्रिया के माध्यम से एक अच्छा चलना है:

http://www.sslshopper.com/article-ssl-host-headers-in-iis-7.html


33
आसान ट्रिक, सर्टिफिकेट को एक फ्रेंडली नाम दें जो '*' से शुरू होता है, IIS होस्ट-हेडर बॉक्स को धूसर नहीं करेगा: blog.armgasys.com/?p=80
russau

1
मुझे पता है कि यह पुराना है, और यह केवल एक टिप्पणी में है, लेकिन इस आसान चाल ने मुझे कुछ निराशा से बचा लिया। धन्यवाद!
bpursley

45

यह GUI में काम करता है ...

बस सुनिश्चित करें कि आपके द्वारा स्थापित किए जा रहे प्रमाणपत्र का 'मैत्रीपूर्ण नाम' वही है जो आपके द्वारा प्रमाणित किए गए मल्टीडोमेननाम के रूप में है।

अर्थात। * .companydomain.com

यदि आप * .companydoman.com सर्टिफिकेट के लिए 'नाइस फ्रेंडली नेम' में रखते हैं, तो आईआईएस में सर्टिफिकेट इंस्टॉल करते समय, यह होस्ट नाम हेडर बॉक्स को ग्रे कर देगा।

यदि आप दोस्ताना नाम के रूप में * .companyname.com का उपयोग करते हैं, तो आप सुनहरे हैं।

बूम।


14
इस टिप के लिए धन्यवाद! यदि कोई अन्य व्यक्ति IIS से कोई प्रमाण पत्र नहीं बदल सकता है (तो कोई भी?) आप प्रमाणपत्र के लिए MMC स्नैप-इन में प्रमाण पत्र का नाम बदल सकते हैं। केवल MMC लोड करें, प्रमाणपत्र स्नैप-इन जोड़ें, कंप्यूटर खाता चुनें, स्थानीय कंप्यूटर। एक बार जब आप प्रमाण पत्र स्नैप-इन लोड कर लेते हैं, तो आप Certiifcates (स्थानीय कंप्यूटर)> व्यक्तिगत> प्रमाणपत्रों पर ब्राउज़ कर सकते हैं और अपने प्रमाणपत्र पर गुण चुनने के लिए राइट क्लिक कर सकते हैं। मैत्रीपूर्ण नाम फ़ील्ड को * .yoursite.com में बदलें और IIS प्रबंधक स्नैप-इन
गैरेट

4
दोस्ताना नाम केवल "*" के साथ शुरू करने की आवश्यकता है, लेकिन इसके बाद जो भी अन्य नाम आप चाहते हैं, उसमें शामिल हो सकते हैं। मेरे मामले में मेरे पास कई अलग-अलग डोमेन के लिए एक मान्य प्रमाणपत्र था, जिसमें * .com के अलावा एक सामान्य रूट नहीं था और यह देना कि जैसा कि अनुकूल नाम अजीब लग रहा था। इसलिए, मैंने इसे * -my-वर्णनात्मक-नाम-यहाँ-इसके बजाय कॉल करना समाप्त कर दिया। और नाम बदलने के लिए धन्यवाद @ टिप टिप!
21

यही असली जवाब है। नाइस
जो फिलिप्स

@Garrett का मतलब यह है कि अगर मैंने 'माय डोमेन एसएसएल' जैसे एक दोस्ताना नाम का उपयोग किया है, तो चीजें अभी भी काम करेंगी, भले ही होस्ट नाम फ़ील्ड रिक्त हो। जब मैंने अपने होस्ट के नाम खो दिए, तो यह वास्तव में मुझे अजीब लगा, लेकिन मेरे 4 वाइल्डकार्ड उप डोमेन फिर से लगे एसएसएल के साथ ठीक काम करने लगते हैं? स्पष्ट रूप से '* .mydomain.com' को एक दोस्ताना नाम के रूप में उपयोग करने से आपको मेजबान नाम देखने की अनुमति मिलती है, लेकिन हुड के तहत दोनों विकल्पों पर काम करना चाहिए। अन्यथा, IIS स्पष्ट रूप से हमें एक योग्य डोमेन नाम का उपयोग करने के लिए कह रहा है और एक अनुकूल नाम नहीं होना चाहिए?
चार्ल्स रॉबर्टसन

10

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

अधिक पूर्ण व्याख्या यह है कि एसएसएल आपके ट्रैफ़िक को एन्क्रिप्ट करता है, और उस ट्रैफ़िक का एक हिस्सा है HTTP हेडर जो ब्राउज़र द्वारा सर्वर पर भेजा जाता है। उन हेडर में से एक "होस्ट" हेडर होगा जो आईआईएस अनुरोध के साथ लोड करने के लिए किस साइट को निर्धारित करने के लिए उपयोग करता है। चूंकि प्रमाणपत्र को सुरक्षित कनेक्शन स्थापित करने के लिए लोड करने की आवश्यकता होती है, इसलिए जब अनुरोध हेडर भेजे जाते हैं, तो IIS को केवल IP पते और पोर्ट नंबर के आधार पर प्रमाणपत्र का चयन करना होता है, जिससे ठंड में "होस्ट" हेडर बाहर निकलता है, जो निर्धारण में एक कारक के रूप में होता है। किस साइट को लोड करना है, इसलिए वे आपको एक दर्ज नहीं करने देते हैं।

यहाँ एक लेख है जो एसएसएल कनेक्शन के आंतरिक कामकाज की बारीकियों को विस्तार से बताता है।


इस जवाब के लिए धन्यवाद, जस्टिन। मैं अभी भी अनिश्चित हूं कि IIS7 मुझे होस्ट हेडर निर्दिष्ट करने की अनुमति क्यों नहीं देता, तब भी जब मैं सूची में एक आईपी पते को चुनता हूं। IIS6 बिना किसी समस्या के करता है। जैसा कि उल्लेख किया गया है, यह मशीन पर एक और एकमात्र साइट है।
पी। काम्पबेल

2
होस्ट हेडर वाइल्डकार्ड सर्टिफिकेट या मल्टी-डोमेन "यूसी" सर्टिफिकेट के साथ काम कर सकते हैं: sslshopper.com/unified- बनी- uc- ssl-certports.html । इस मामले में सर्वर में केवल 1 सर्टिफिकेट होता है, यहां तक ​​कि कई होस्टनाम भी हैं।
russau

बहुत स्पष्ट व्याख्या। +1
Dan Solovay

7

SSLShopper उत्तर ने मेरे लिए काम नहीं किया क्योंकि इसने होस्ट हेडर के बिना बाइंडिंग को छोड़ दिया, और आप उस बंधन को बिना सर्टिफिकेट के कनेक्शन को तोड़े बिना नहीं निकाल सकते थे। यहाँ मैं इसे काम करने के लिए इस्तेमाल किया विधि है:

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

सबसे पहले, हमें कुछ जानकारी एकत्र करने की आवश्यकता है। हमें हैश, एप्लिकेशन आईडी और होस्ट नाम की आवश्यकता है।

कदम

  1. IIS खोलें, अपने सर्वर का चयन करें और नीचे अनुभाग में "सर्वर प्रमाणपत्र" पर डबल क्लिक करें। "जारी किए गए" पते पर ध्यान दें। यह हमारा मेजबान नाम है। इसे बचाएं।
  2. अपनी साइट का चयन करें
  3. Http प्रोटोकॉल का उपयोग करके अपनी साइट को 80 पोर्ट में बांधें
  4. अन्य सभी बाइंडिंग निकालें
  5. Https प्रोटोकॉल का उपयोग करके अपनी साइट को 443 में पोर्ट करें
  6. एक कमांड प्रॉम्प्ट खोलें

    netsh http show sslcert
    
  7. प्रमाणपत्र हैश और एप्लिकेशन आईडी सहेजें

  8. अपनी साइट पर https बाइंडिंग निकालें
  9. कमांड प्रॉम्प्ट पर:

    netsh http add sslcert ipport=0.0.0.0:443 certstorename=my certhash=<put Certificate Hash here> appid={<put Application ID here>}
    
    appcmd set site /site.name:"<put site name here>" /+bindings.[protocol='https',bindingInformation='*:443:<put host name here>']
    

नोट: Appcmd.exe को c: \ windows \ system32 \ insetsrv में पाया जा सकता है। इस कमांड को काम करने के लिए आपको उस फोल्डर में रहना पड़ सकता है।

  1. अपनी साइट से http बाइंडिंग निकालें

धन्यवाद! इससे मुझे अपनी साइट को HTTPS में काम करने में मदद मिली। मैंने कमांड में से एक में एक टाइपो को ठीक किया, लेकिन मुझे न्यूनतम लंबाई की आवश्यकताओं को प्राप्त करने के लिए स्टेप्स हेडिंग को जोड़ना पड़ा। इसे हटाने के लिए स्वतंत्र महसूस करें - आपके मूल उत्तर का पालन करना आसान है। चीयर्स!
पोटाटोपेलिंग्स

इसने मेरे लिए 6 सेंस (वाइल्डकार्ड सर्टिफिकेट नहीं) के साथ थोड़े बदलाव के साथ एक प्रमाण पत्र दिया क्योंकि मेरे पास कई साइटें थीं। मुझे एक बार चरण 1 से 7 करना था। चरण 8 प्रत्येक साइट पर किया जाना था। चरण 9 की पहली कमांड को एक बार किया जाना था और चरण 9 की दूसरी कमान को प्रति साइट पर एक बार किया जाना था।
स्टीव काय

4

यहाँ स्वीकृत उत्तर भ्रमित करने वाला है और मुझे नहीं लगता कि यह प्रश्न के लिए सही है। यह स्वीकृत उत्तर नहीं होना चाहिए।

समस्या

आपके पास एक वाइल्डकार्ड SSL है जैसे कि *.ipsum.comऔर प्रमाणपत्र स्थापित है लेकिन आप IIS में साइट के लिए होस्ट नाम का चयन नहीं कर सकते हैं जब आप HTTPS बाइंडिंग को जोड़ने का प्रयास करते हैं क्योंकि टेक्स्ट बॉक्स को बाहर निकाल दिया जाता है।

समाधान

आपके वाइल्डकार्ड SSL का उपयोग किसी भी उपडोमेन के साथ किया जा सकता है, आपको बस यह सुनिश्चित करने की आवश्यकता है कि आप प्रमाणपत्र का दोस्ताना नाम शुरू करें *। मैं वाइल्डकार्ड डोमेन जैसे ही दोस्ताना नाम का उपयोग करना पसंद करता हूं, *.ipsum.comलेकिन आप इसे एस्टरिक्स के साथ कुछ भी कह सकते हैं:*foo

मैंने अपना प्रमाणपत्र गलत मैत्रीपूर्ण नाम दिया, मदद!

विंडोज 8 या सर्वर 2012 के बाद से, आप certlm.mscस्थानीय मशीन के लिए प्रमाणपत्र का प्रबंधन करने के लिए प्रारंभ मेनू में टाइप कर सकते हैं । खिड़कियों के पिछले संस्करणों में आपको कुछ और अधिक दृढ़ करने की आवश्यकता होगी:

  1. mmc.exeशुरू से चलाएं
  2. Fileमेनू पर जाएं और चुनें Add/Remove Snap-in...या हिट करें(Ctrl-M)
  3. हाइलाइट Certificatesस्नैप-में और हिट Add >तो चुन Computer Accountके बाद Local Computerबाद में संवाद तो हिट में Finishके बाद OKस्नैप-इन विंडो को बंद करने

मुख्य विंडो में, विस्तृत Certificates (Local Computer)तब Personalतो Certificatesऔर आप के लिए प्रमाण पत्र को राइट-क्लिक में सक्षम हो जाएगा, मारा Propertiesजहां दोस्ताना नाम अपडेट कर सकते हैं।

IIS प्रबंधक को बंद करें और खोलें और फिर आप अपना होस्ट नाम सेट कर सकते हैं।


1
यह किया चाल!
क्रेकर

1
@Zac बहुत बढ़िया। बहुत बढ़िया। बहुत बढ़िया। हालाँकि मुझे नहीं लगता कि यह वास्तव में मायने रखता है यदि होस्ट नाम फ़ील्ड रिक्त है, इसने मुझे मन की शांति प्रदान की। कृपया ध्यान रखें, कि मैं अपना प्रमाण पत्र पुनः जारी कर रहा था। इसलिए मेरा होस्ट नाम खाली जाने से पहले ही होस्ट नाम फ़ील्ड में था। मेरा वाइल्डकार्ड एसएसएल एक दोस्ताना नाम के साथ काम करने लगा था। * mydomain.com प्रकार नाम। मुझे लगता है कि होस्ट नाम फ़ील्ड खाली होने के बाद IIS होस्ट नाम का आंतरिक रिकॉर्ड रखता है। मुझे लगा कि मुझे इस बात का उल्लेख करना चाहिए, अगर लोग बाहर फैंक रहे हैं!
चार्ल्स रॉबर्टसन

1
@ ज़ैक ओह। और यह समाधान विंडोज 2008R2 जैसे डायनासोर सर्वर पर काम करता है ...
चार्ल्स रॉबर्टसन

@CharlesRobertson को इससे बहुत खुशी हुई, और उस पूरक जानकारी को जोड़ने के लिए धन्यवाद!
Zac

2

वास्तव में, आप gui के माध्यम से एक होस्ट हेडर जोड़ सकते हैं, लेकिन यह इस बात पर निर्भर करता है कि प्रमाणपत्र का नाम कैसे है ... यदि मैं अपने वाइल्डकार्ड सर्टिफिकेट को * .xyz.com * का नाम देता हूं, और उस प्रमाणपत्र का चयन करता हूं, तो मैं गुई का उपयोग करने में सक्षम। अगर दोस्ताना नाम xyzwildcard जैसा कुछ है, और मैं इसे चुनता हूं, तो यह hostheader फ़ील्ड को बाहर कर देता है ...

अजीब अजीब


1

अगर प्रोटोकॉल को https में बदल दिया जाता है या SSL प्रमाणपत्र जोड़ने के बाद कुछ मशीनें आपको होस्ट नाम संपादित नहीं करने देंगी। IIS कई बार क्रोधी हो सकता है।

यह विंडोज कमांड पोर्ट "443", होस्ट नाम "सबडोमेन.डोमेन.कॉम", साइट नाम "साइट नाम" पर प्रोटोकॉल "https" के साथ एक नया बंधन बनाएगा। अपनी आवश्यकताओं को पूरा करने के लिए उन मूल्यों (उद्धरणों में) को बदलें। यदि पोर्ट 443 का उपयोग कर रहे हैं तो आपको फिर पुराने बंधन को हटाना होगा।

Run Windows Command Prompt as Administrator

सी:>cd C:\Windows\System32\inetsrv

C: \ Windows \ System32 \ inetsrv>appcmd set site /site.name:"site_name" /+bindings.[protocol='https',bindingInformation='*:443:subdomain.domain.com']


0

होस्टनाम तभी जोड़ा जा सकता है जब चयनित सर्टिफिकेट का फ्राइडलीनाम होस्टनाम * .xyz.com जैसा होगा और आप एमएमसी (स्नैप-इन) से सर्टिफिकेट फ्रेंडली नाम का नाम * .xyz.com कर सकते हैं।


-1

मुझे लगता है कि यह केबी लेख मुद्दे पर कुछ प्रकाश डालेगा। जब आप SSL का उपयोग करते हैं तो संक्षेप में HTTP 1.1 होस्ट हेडर समर्थित नहीं होते हैं।

क्या आप चाहते हैं कि SecureBindings मेटाबेस कुंजी का उपयोग करने के लिए संभव है कि क्या पूरा होगा। Eg cscript.exe adsutil.vbs set / w3svc / websiteID / SecureBindings "ip.ip.ip.ip: 443: abc.123.mysite.com


IIS 7.
davidcl

यह अजीब है क्योंकि यह तब काम करता है जब हमने इसे किया था ...
जिम बी

-1

क्यों MSI GUI का यह OUT मेरे से परे है, यदि आपके पास ASP.NET अनुप्रयोग है जो लाइसेंस फ़ाइलों (लाइसेंस) का उपयोग करता है, तो आपकी साइट काम नहीं करेगी क्योंकि यह डोमेन नाम के बजाय आईपी पते के रूप में दिखाई देता है । उन्हें अपने सॉफ़्टवेयर की हर नई रिलीज़ पर सहायता करने की आवश्यकता है - IT लोगों को Microsoft द्वारा बेबीसिट करने की आवश्यकता नहीं है! गीज़!


-2
  1. मैंने * .testcompany.com के साथ एक स्व-हस्ताक्षरित प्रमाण पत्र बनाया है, मैंने एडिट बाइंडिंग एसएसएल सर्टिफिकेट ड्रॉप डाउन में नव निर्मित (* के साथ शुरू) का चयन किया, मुझे होस्ट नाम टेक्स्ट बॉक्स सक्षम किया गया, होस्ट नाम को 'webapi.b2c' बनाया। .com ',

  2. मैंने C: \ Windows \ System32 \ driver \ etc 127.0.0.1 webapi.b2c.com में होस्ट फ़ाइल को अपडेट किया

अब मैं साइट को ' https://webapp.b2c.com/ ' के रूप में ब्राउज़ करने में सक्षम हूं ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.