2009-02-26 11 views
50

Czy możesz mi doradzić, czy możliwe jest przypisanie certyfikatu SSL do witryny w IIS7 przy użyciu aplikacji APPCMD?Jak przypisać certyfikat SSL do witryny IIS7 z wiersza polecenia

jestem zaznajomiony z poleceniem, aby ustawić HTTPS Binding

appcmd set site /site.name:"A Site" /+bindings.[protocol='https',bindingInformation='*:443:www.mysite.com'] 

i sposobu uzyskania aktualnych odwzorowań

%windir%\system32\inetsrv\Appcmd 

ale nie wydaje się znaleźć jakiś sposób na mapowanie witryny do certyfikatu (na przykład mieszanie certyfikatów)

Odpowiedz

50

Odpowiedzią jest użycie NETSH. Na przykład

netsh http add sslcert ipport=0.0.0.0:443 certhash='baf9926b466e8565217b5e6287c97973dcd54874' appid='{ab3c58f7-8316-42e3-bc6e-771d4ce4b201}' 
+3

Gdzie można uzyskać APPID? –

+0

Po prostu używam losowego identyfikatora GUID dla appID –

+3

Nie działa dla mnie: Nieudane dodanie certyfikatu SSL, Błąd: 183 Nie można utworzyć pliku, gdy ten plik już istnieje. – thomaspaulb

16

To bardzo mi pomogło: prosty przewodnik, przez Ashok Kumar Sukesh do konfigurowania protokołu SSL dla IIS z wiersza poleceń. Obejmuje importowanie/generowanie certyfikatu za pomocą certutil/makecert.

http://www.awesomeideas.net/post/How-to-configure-SSL-on-IIS7-under-Windows-2008-Server-Core.aspx

EDIT: jeśli oryginalny adres URL jest w dół, to jeszcze dostępne through the Wayback Machine.

+0

Ten adres URL daje mi żółty ekran śmierci ASP.NET ... – TLS

+0

@TLS - crap. Dodano link do maszyny w stylu wayback. – orip

4

@David and @orip mają to prawo.

Ja jednak chciałem wspomnieć, że ipport parametr podany w przykładzie (0.0.0.0:443) jest to, co nazywa „MSDN Adres nieokreślony (IPv4: 0.0.0.0 lub IPv6 [::]) ".

Poszedłem sprawdzać, więc pomyślałem, że będę tu dokumentował, aby uratować kogoś innego. Ten artykuł skupia się na SQL Server, ale informacja ta jest nadal aktualna:

http://msdn.microsoft.com/en-us/library/ms186362.aspx

8

Z PowerShell i modułu WebAdministration, można wykonać następujące czynności, aby przypisać certyfikat SSL do witryny IIS:

# ensure you have the IIS module imported 
Import-Module WebAdministration 

cd IIS:\SslBindings 
Get-Item cert:\LocalMachine\My\7ABF581E134280162AFFFC81E62011787B3B19B5 | New-Item 0.0.0.0!443 

Rzeczy do zapamiętania ... wartość "7ABF581E134280162AFFFC81E62011787B3B19B5" to odcisk kciuka dla certyfikatu, który chcesz zaimportować. Dlatego najpierw trzeba go zaimportować do bazy certyfikatów. Polecenie cmdlet New-Item przyjmuje adres IP (0.0.0.0 dla wszystkich adresów IP) i port.

Aby uzyskać więcej informacji, patrz http://learn.iis.net/page.aspx/491/powershell-snap-in-configuring-ssl-with-the-iis-powershell-snap-in/.

Testowałem to w systemie Windows Server 2008 R2, a także w wersji wstępnej systemu Windows Server 2012.

+0

Podoba mi się sposób, w jaki można użyć certyfikatu Get-Item: \ LocalMachine \ My \ *, aby skorzystać z certyfikatów SSL zapewnionych przez AD. – carpenterjc

0

Korzystając z odpowiedzi z tego posta, stworzyłem pojedynczy skrypt, który zrobił mi lewę. Zaczyna się od pliku pfx, ale możesz pominąć ten krok.

Oto ona:

cd C:\Windows\System32\inetsrv 

certutil -f -p "pa$$word" -importpfx "C:\temp\mycert.pfx" 

REM The thumbprint is gained by installing the certificate, going to cert manager > personal, clicking on it, then getting the Thumbprint. 
REM Be careful copying the thumbprint. It can add hidden characters, esp at the front. 
REM appid can be any valid guid 
netsh http add sslcert ipport=0.0.0.0:443 certhash=5de934dc39cme0234098234098dd111111111115 appid={75B2A5EC-5FD8-4B89-A29F-E5D038D5E289} 

REM bind to all ip's with no domain. There are plenty of examples with domain binding on the web 
appcmd set site "Default Web Site" /+bindings.[protocol='https',bindingInformation='*:443:']