2009-02-26 14 views
50

Potete consigliarmi se è possibile o meno assegnare un certificato SSL a un sito Web in IIS7 utilizzando l'applicazione APPCMD?Come assegnare un certificato SSL al sito IIS7 dal prompt dei comandi

mi è familiare con il comando per impostare i binding HTTPS

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

e come ottenere mappature attuali

%windir%\system32\inetsrv\Appcmd 

ma non riesco a trovare un modo per mappare un sito per un certificato (ad esempio l'hash dei certificati)

risposta

50

La risposta è utilizzare NETSH. Per esempio

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

dove si ottiene l'appid? –

+0

Semplicemente utilizzo un GUID casuale per l'appID –

+3

Non funziona per me: aggiunta certificato SSL non riuscita, errore: 183 Impossibile creare un file quando tale file esiste già. – thomaspaulb

16

Questo mi ha aiutato molto: una semplice guida, da Sukesh Ashok Kumar, alla creazione di SSL per IIS dalla riga di comando. Include l'importazione/generazione del certificato con certutil/makecert.

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

EDIT: se l'URL originale è giù, è ancora disponibile through the Wayback Machine.

+0

Quell'URL mi dà una schermata gialla di morte ASP.NET ... – TLS

+0

@TLS - merda. Aggiunto un collegamento al sistema di ritorno. – orip

4

@David e @orip hanno ragione.

Tuttavia, ho voluto ricordare che il ipport parametro specificato nell'esempio (0.0.0.0:443) è ciò che il MSDN chiama la "indirizzo non specificato (IPv4: 0.0.0.0 o IPv6: [::])".

Sono andato a cercarlo, quindi ho pensato che avrei documentato qui per salvare qualcun altro il tempo. Questo articolo si concentra su SQL Server, ma le informazioni sono ancora rilevanti:

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

8

Con PowerShell e il modulo WebAdministration, è possibile effettuare le seguenti operazioni per assegnare un certificato SSL a un sito di 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 

Cose da notare ... il valore "7ABF581E134280162AFFFC81E62011787B3B19B5" è l'identificazione personale per il certificato che si desidera importare. Quindi deve essere prima importato nell'archivio certificati. Il cmdlet New-Item include l'indirizzo IP (0.0.0.0 per tutti gli IP) e la porta.

Vedere http://learn.iis.net/page.aspx/491/powershell-snap-in-configuring-ssl-with-the-iis-powershell-snap-in/ per ulteriori dettagli.

Ho provato questo in Windows Server 2008 R2 e Windows Server 2012 pre-release.

+0

Mi piace il modo in cui è possibile utilizzare il certificato Get-Item: \ LocalMachine \ My \ * per sfruttare i certificati SSL con provisioning di Active Directory. – carpenterjc

0

Utilizzando le risposte di questo post, ho creato un singolo script che ha fatto il trucco per me. Inizia dal file pfx, ma puoi saltare questo passaggio.

Qui è:

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:']