2014-10-21 15 views
8

मैं वर्तमान में एक नई स्वचालित तैनाती स्थापित कर रहा हूं और जानना चाहता हूं कि आईआईएस 8 प्रोग्रामेटिक रूप से सक्षम एसएनआई के साथ एक https बाध्यकारी कैसे पंजीकृत करें। वेबसाइट पहले से मौजूद है और एसएसएल प्रमाणपत्र पहले ही स्थापित है।आईआईएस 8 में सक्षम एसएनआई के साथ एक https बाध्यकारी पावरशेल स्क्रिप्ट

  • वेब साइट नाम
  • SSL प्रमाणपत्र थंबप्रिंट
  • डोमेन बाध्य करने के लिए

मान लें SSL प्रमाणपत्र पहले से स्थापित है:

powershell स्क्रिप्ट में पारित निम्नलिखित मानकों है।

क्या कोई मेरी मदद कर सकता है?

उत्तर

13

यदि आप कहते हैं के रूप में प्रमाण पत्र पहले से स्थापित है और अनुप्रयोग पूल पहचान तो आप निजी कुंजी करने की अनुमति है

New-WebBinding -Name $WebsiteName -Protocol "https" -Port 443 -IPAddress $IPAddress -HostHeader $HostHeader -SslFlags $sslFlags 

आप निश्चित रूप से हालांकि इस कोड को चलाने से पहले चर सेट करने के लिए की आवश्यकता होगी: एक नया इस तरह बाध्यकारी रजिस्टर करने के लिए सक्षम होना चाहिए ये स्वयं व्याख्यात्मक होना चाहिए।

जब $ sslFlags चर इस निम्न तालिका के अनुसार स्थापित किया जाना चाहिए के मूल्य की स्थापना:

0 No SNI 
1 SNI Enabled 
2 Non SNI binding which uses Central Certificate Store. 
3 SNI binding which uses Central Certificate store 

अपने मामले के बाद से आप केंद्रीय प्रमाणपत्र संग्रह उपयोग नहीं कर रहे यह 1 करने के लिए सेट किया जाना चाहिए है।

एक बार जब आप एसएसएल बाध्यकारी हो जाते हैं तो आपको बाध्यकारी को सही प्रमाणपत्र से जोड़ना होगा। मुझे अनुभव के माध्यम से पता चला है कि ऐसा करने का सबसे आसान तरीका netsh.exe कमांड का उपयोग करना है। पावरहेल का उपयोग सीधे करना संभव है, हालांकि विभिन्न समस्याओं की जांच और संबोधन के कई घंटों के बाद मुझे नेट्स को और अधिक भरोसेमंद पाया गया।

यहां वाक्यविन्यास इस बात पर निर्भर करता है कि बाध्यकारी कैसे स्थापित किया जा रहा है, हालांकि यदि आप एसएनआई का उपयोग कर रहे हैं तो आपको निम्नलिखित वाक्यविन्यास की आवश्यकता होगी: (एपिड के बारे में चिंता न करें, मूल्य महत्वपूर्ण नहीं है)

netsh http add sslcert hostnameport=$($HostHeader):$($Port) certhash=$Thumbprint appid='{4dc3e181-e14b-4a21-b022-59fc669b0914}' certstorename=MY 

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

$Thumbprint = (Get-ChildItem -Path cert:\LocalMachine\My | Where-Object {$_.GetNameInfo("SimpleName",$false) -eq "my cert common name"}).Thumbprint 

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

0

तो बाध्यकारी allready मौजूद है, लेकिन प्रमाण पत्र याद आ रही है (यह मानते हुए अपनी साइट पोर्ट 443 का उपयोग करता है):

cd IIS:\sslbindings 
get-item cert:\certpath\$thumbprint | new-item 0.0.0.0!443 

आईआईएस पी एस-ड्राइव आप मॉड्यूल webadministration आयात करने के लिए है पर पहुंचने के लिए।

बाध्यकारी तो अभी तक अस्तित्व में नहीं है आप

New-WebBinding -Name $siteName -IP "*" -Port 443 -Protocol https 

सादर के साथ बना सकते हैं

3

यदि आप नेटेश का उपयोग नहीं करना चाहते हैं, तो आप एक एसएनआई बाइंडिंग ("सर्वर नाम संकेत की आवश्यकता है" फ्लैग सेट भी जोड़ सकते हैं!) केवल पावरहेल का उपयोग करके।

# Parameters: 
$WebsiteName = "Your Site Name" # this is the Sites name as displayed in IIS Manager 
$port = 443 # SSL Port, when using SNI most likely the default port 443 
$hostHeader = "www.example.com" # the domain/host-header this binding should listen for 
$thumbprint = "AAABBBCCCDDDEEEFFF000111222333444555666" # the certificate thumbprint 
# Commands: 
New-Item -Path "IIS:\SslBindings\!$port!$hostHeader" -Thumbprint $thumbprint -SSLFlags 1 
New-WebBinding -Name $WebsiteName -Protocol "https" -Port $port -HostHeader $hostHeader -SslFlags 1 

आशा इस कोई मदद करता है:

यहाँ मैं IIS8 के लिए मिल सकता है सबसे सरल तरीका है! :-)

+1

(गैर-दस्तावेजी) '-SSLFlags 1' पर' नई मद के दोनों की तुलना में बेहतर काम करने के लिए लगता है जोड़ने के लिए बाध्य वस्तु पर एक विधि है 'और आईपी पते को छोड़कर मेरे लिए चाल थी। धन्यवाद, इससे बहुत मदद मिली! –

1

वहाँ वास्तव में एक SSL जो ऊपर दिए गए विकल्पों

$Name = '' 
$IP = '' 
$HostHeader = '' 

#ymmv here. if host header doesnt match subject name you need to adjust how you're getting the cert 
$Cert = (gci cert:\LocalMachine\My) | ? { (($_.Subject | SLS '^(?:CN=)(.*?)(?=,)').matches.groups.value[-1]) -eq $HostHeader} 

New-WebBinding -Name $Name -Protocol 'https' -Port 443 -IPAddress $IP -HostHeader $HostHeader -SslFlags 1 
$NewBinding = get-webbinding -hostheader $HostHeader -protocol https 
$NewBinding.AddSSLCertificate("$($cert.getcerthashstring())","MY") 
संबंधित मुद्दे