2009-02-26 41 views
50

¿Puede avisarme si es posible o no asignar un certificado SSL a un sitio web en IIS7 utilizando la aplicación APPCMD?Cómo asignar un certificado SSL al sitio IIS7 desde el símbolo del sistema

estoy familiarizado con el comando para establecer las HTTPS Encuadernación

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

y cómo obtener las asignaciones actuales

%windir%\system32\inetsrv\Appcmd 

pero parece que no puede encontrar ninguna manera de asignar un sitio a un certificado (digamos el hash de certificados, por ejemplo)

Respuesta

50

La respuesta es usar NETSH. Por ejemplo

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

¿De dónde sacas la appid? –

+0

Simplemente uso un GUID aleatorio para la aplicación ID –

+3

No funciona para mí: el certificado SSL no se pudo completar, Error: 183 No se puede crear un archivo cuando ese archivo ya existe. – thomaspaulb

16

Esto me ha ayudado mucho: una guía sencilla, por Sukesh Ashok Kumar, a la configuración de SSL para IIS desde la línea de comandos. Incluye la importación/generación del certificado con certutil/makecert.

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

EDIT: si la URL original es abajo, es todavía disponibles through the Wayback Machine.

+0

Esa URL me da una pantalla amarilla ASP.NET de la muerte ... – TLS

+0

@TLS - mierda. Se agregó un enlace de máquina de retorno. – orip

4

@David y @orip tienen razón.

Sin embargo, me gustaría mencionar que el ipport parámetro especificado en el ejemplo (0.0.0.0:443) es lo que el MSDN llama la "dirección no especificada (IPv4: 0.0.0.0 o IPv6: [::]) ".

Fui a buscarlo, así que pensé en documentar aquí para salvar a alguien más el tiempo. Este artículo se centra en SQL Server, pero la información sigue siendo pertinente:

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

8

Con PowerShell y el módulo WebAdministration, puede hacer lo siguiente para asignar un certificado SSL para un sitio de 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 

Lo que debe tener en cuenta ... el valor, "7ABF581E134280162AFFFC81E62011787B3B19B5" es la huella digital del certificado que desea importar. Por lo tanto, primero debe importarse en el almacén de certificados. El cmdlet New-Item toma la dirección IP (0.0.0.0 para todas las direcciones IP) y el puerto.

Consulte http://learn.iis.net/page.aspx/491/powershell-snap-in-configuring-ssl-with-the-iis-powershell-snap-in/ para obtener más información.

He probado esto en Windows Server 2008 R2 y Windows Server 2012 prelanzamiento.

+0

Me gusta la forma en que puede usar Get-Item cert: \ LocalMachine \ My \ * para aprovechar los certificados SSL aprovisionados de AD. – carpenterjc

0

Usando las respuestas de esta publicación, creé un único guión que me sirvió. Comienza desde el archivo pfx, pero puede omitir ese paso.

aquí está:

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