Procedimientos para configurar SSL en IIS 7 o versiones posteriores
por Saad Ladki
Introducción
Los pasos para configurar la Capa de sockets seguros (SSL) en un sitio son los mismos en IIS 7 y versiones posteriores e IIS 6.0, e incluyen las siguientes acciones:
- Obtenga un certificado adecuado.
- Cree un enlace HTTPS en un sitio.
- Realice una solicitud al sitio para probarlo.
- Opcionalmente, puede hacer que SSL sea un requisito y configurar las opciones SSL.
En este documento se proporciona información básica sobre SSL y, después, se muestra cómo habilitar SSL de las siguientes formas:
- Mediante el Administrador de IIS
- Mediante la herramienta de línea de comandos AppCmd.exe
- Mediante programación a través de Microsoft.Web.Administration
- Mediante scripts de WMI
Este artículo contiene las siguientes secciones:
Configuración de SSL
Tanto si ejecuta su sitio web en su propio servidor como en la nube, el uso de SSL para proteger el sitio puede ser sumamente importante, ya que muchos sitios web están recurriendo a este para proteger la privacidad del usuario. Si necesita configurar SSL en el servidor, es importante tener en cuenta que la implementación de SSL ha cambiado de IIS 6.0 a IIS 7 y versiones posteriores. Con IIS 6.0 en Windows Server 2003, toda la configuración SSL se almacenaba en la metabase de IIS y el cifrado y descifrado se realizaban en modo usuario (lo que requería una gran cantidad de transiciones en modo kernel o usuario). En IIS 7 y versiones posteriores, HTTP.sys controla el cifrado o descifrado SSL en modo kernel, lo que da como resultado un rendimiento de las conexiones seguras hasta un 20 % mejor en IIS 7 y versiones posteriores respecto al que se experimentaba en IIS 6.0.
El uso de SSL en modo kernel requiere almacenar la información de los enlaces SSL en dos lugares. En primer lugar, el enlace se almacena en windir%\System32\inetsrv\config\applicationHost.config para el sitio. Cuando el sitio se inicia, IIS envía el enlace a HTTP.sys y este último comienza a escuchar las solicitudes en el valor IP:Puerto especificado (esto funciona para todos los enlaces). En segundo lugar, la configuración SSL asociada al enlace se almacena en la configuración de HTTP.sys. Use el comando netsh en un símbolo del sistema para ver la configuración de enlaces SSL almacenada en HTTP.sys como en el ejemplo siguiente:
netsh http show sslcert
Cuando un cliente se conecta e inicia una negociación SSL, HTTP.sys busca en su configuración SSL el par IP:Puerto al que se ha conectado el cliente. La configuración SSL de HTTP.SYS debe incluir un hash de certificado y el nombre del almacén de certificados para que la negociación SSL pueda realizarse correctamente.
Sugerencia de solución de problemas: si tiene problemas con un enlace SSL, compruebe que el enlace está configurado en ApplicationHost.config y que el almacén de HTTP.sys contiene un nombre de almacén y hash de certificado válidos para el enlace.
Elección de un certificado
Al elegir un certificado, tenga en cuenta lo siguiente: ¿Quiere que los usuarios finales puedan comprobar la identidad del servidor con el certificado? Si es así, cree una solicitud de certificado y envíela a una entidad de certificación (CA) conocida, como VeriSign o GeoTrust, o bien obtenga un certificado de una CA en línea en el dominio de la intranet. Hay tres cosas que un explorador suele comprobar en un certificado de servidor:
- La fecha y hora actuales están dentro del intervalo de fechas "Válido desde" y "Válido hasta" en el certificado.
- El "nombre común" del certificado coincide con el encabezado de host en la solicitud. Por ejemplo, si el cliente realiza una solicitud a
https://www.contoso.com/
, el certificado común debe serwww.contoso.com
. - Que el emisor del certificado sea una entidad de certificación conocida y de confianza.
Si se produce un error en una o varias de estas comprobaciones, el explorador muestra advertencias al usuario. Si tiene un sitio de Internet o un sitio de intranet donde no conozca a los usuarios finales personalmente, debe asegurarse siempre de que se cumplan estos tres parámetros.
Los certificados autofirmados se crean en el equipo. Son útiles en entornos en los que no es importante que el usuario final confíe en el servidor, como un entorno de prueba.
Uso de AppCmd
No puede solicitar ni crear un certificado con AppCmd.exe. Tampoco puede usar AppCmd.exe para crear un enlace SSL.
Configuración de SSL
Puede usar AppCmd.exe para configurar un sitio de forma que solo acepte conexiones HTTPS de servidor mediante la modificación del atributo sslFlags en la sección Access. Así, puede configurar este valor para el "Sitio web predeterminado" en el archivo ApplicationHost.config (por ejemplo, commitPath:APPHOST) mediante el siguiente comando:
%windir%\system32\inetsrv>AppCmd set config "Default Web Site" -commitPath:APPHOST -section:access -sslFlags:Ssl
Si se realiza correctamente, se muestra el siguiente mensaje:
Applied configuration changes to section "system.webServer/security/access" for "MACHINE/WEBROOT/APPHOST/Default Web Site" at configuration commit path "MACHINE/WEBROOT/APPHOST"
Nota:
Para requerir SSL de 128 bits, cambie el valor sslFlags a Ssl128.
En el ejemplo siguiente, se muestra cómo ver la configuración de la sección <access/> para el sitio web predeterminado. El atributo sslFlags se ha establecido correctamente.
%windir%\system32\inetsrv>AppCmd list config "Default Web Site" -section:access
La ejecución del comando da como resultado la siguiente entrada en el archivo ApplicationHost.config:
<system.webServer>
<security>
<access flags="Script, Read" sslFlags="Ssl" />
</security>
</system.webServer>
Uso de WMI
No puede solicitar ni crear un certificado mediante el espacio de nombres WMI WebAdministration.
Creación de un enlace SSL
El siguiente script muestra cómo crear un enlace SSL y cómo agregar la configuración adecuada para HTTP.sys e IIS:
Set oIIS = GetObject("winmgmts:root\WebAdministration")
'''''''''''''''''''''''''''''''''''''''''''''
' CREATE SSL BINDING
'''''''''''''''''''''''''''''''''''''''''''''
oIIS.Get("SSLBinding").Create _
"*", 443, "4dc67e0ca1d9ac7dd4efb3daaeb15d708c9184f8", "MY"
'''''''''''''''''''''''''''''''''''''''''''''
' ADD SSL BINDING TO SITE
'''''''''''''''''''''''''''''''''''''''''''''
Set oBinding = oIIS.Get("BindingElement").SpawnInstance_
oBinding.BindingInformation = "*:443:"
oBinding.Protocol = "https"
Set oSite = oIIS.Get("Site.Name='Default Web Site'")
arrBindings = oSite.Bindings
ReDim Preserve arrBindings(UBound(arrBindings) + 1)
Set arrBindings(UBound(arrBindings)) = oBinding
oSite.Bindings = arrBindings
Set oPath = oSite.Put_
Nota:
El almacén y el hash del certificado deben hacer referencia a un certificado real funcional en el servidor. Si el nombre del almacén o hash del certificado son falsos, se devuelve un error.
Configuración de SSL
El siguiente script muestra cómo establecer la configuración de SSL mediante el proveedor de WMI de IIS. Puede encontrar este valor en el archivo IIS_Schema.xml.
CONST SSL = 8
Set oIIS = GetObject("winmgmts:root\WebAdministration")
Set oSection = oIIS.Get(\_
"AccessSection.Path='MACHINE/WEBROOT/APPHOST',Location='Default Web Site'")
oSection.SslFlags = oSection.SslFlags OR SSL
oSection.Put\_ <a id="IISManager"></a>
Administrador de IIS
para obtener un certificado
Seleccione el nodo de servidor en la vista de árbol y haga doble clic en la característica Certificados de servidor en la vista de lista:
Haga clic en Crear certificado autofirmado... en el panel Acciones.
Escriba un nombre descriptivo para el nuevo certificado y haga clic en Aceptar.
Ahora tiene un certificado autofirmado. El certificado está marcado para el uso de "Autenticación de servidor"; es decir, se usa como certificado del lado servidor para el cifrado SSL de HTTP y para autenticar la identidad del servidor.
Creación de un enlace SSL
Seleccione un sitio en la vista de árbol y haga clic en Enlaces... en el panel Acciones. Al hacerlo, se abre el editor de enlaces que le permite crear, editar y eliminar enlaces para el sitio web. Haga clic en Agregar... para agregar el nuevo enlace SSL al sitio.
La configuración predeterminada de un nuevo enlace se establece en HTTP en el puerto 80. Seleccione HTTPS en la lista desplegable Tipo. Seleccione el certificado autofirmado que creó en la sección anterior en la lista desplegable Certificado SSL y, a continuación, haga clic en Aceptar.
Ahora tiene un nuevo enlace SSL en el sitio y lo único que queda es comprobar que funciona.
Comprobación del enlace SSL
En el panel Acciones, en Examinar sitio web, haga clic en el vínculo asociado al enlace que acaba de crear.
En Internet Explorer (IE) 7 y versiones posteriores se mostrará una página de error porque el certificado autofirmado lo ha emitido el equipo y no una entidad de certificación (CA) de confianza. Para que IE 7 y sus versiones posteriores confíen en el certificado, debe agregarlo a la lista de entidades de certificación raíz de confianza en el almacén de certificados del equipo local o en la directiva de grupo para el dominio.
Haga clic en Vaya a este sitio web (no recomendado).
Configuración de SSL
Configure los valores de SSL si quiere que el sitio requiera SSL o interactúe de forma específica con los certificados de cliente. Haga clic en el nodo de sitio de la vista de árbol para volver a la página principal del sitio. Haga doble clic en la característica Configuración de SSL en el panel central.
Resumen
En este tutorial, hemos usado correctamente la herramienta de línea de comandos AppCmd.exe, el proveedor de scripting WMI y el Administrador de IIS para configurar SSL en IIS.