Trucos: Habilitar SSL en IIS 7.0 usando certificados firmados por nosotros

SSL permite que los navegadores se comuniquen con un servidor web sobre un canal seguro para evitar que nadie pueda "escuchar" la comunicación, interceptar y falsificar mensajes. Deberíamos usar SSL en las páginas de login donde los usuarios introducen sus nombres de usuario y contraseñas, así como en todas las web de un sitio que puedan ser "sensibles" (por ejemplo: páginas que muestren información financiera o personal).

Configurar SSL en Windows con versiones anteriores de IIS ha sido siempre un quebradero de cabeza. Hay que saber cómo instalar y administrar un certificado, y luego asociarlo a un sitio web, seguro que es algo que la mayoría de desarrolladores web no saben cómo habilitar.

Las buenas noticias son que IIS 7.0 hace radicalmente fácil configurar y habilitar SSL. IIS 7.0 además trae soporte de fábrica para crear nuestros propios certificados de forma sencilla para habilitar rápidamente un sitio web SSL para desarrollo o para test.

Con IIS 7.0 podemos habilitar un sitio web ya creado con SSL en tan sólo 30 segundos. El siguiente tutorial muestra cómo hacer eso.

Paso 1: Crear un nuevo sitio web.

Empezaremos creando un nuevo sitio web con la nueva herramienta de administración de IIS7.0. Esta herramienta de adminstración ha sido reescrita completamente a partir de la versión anterior (que fué escrita usando código manegado con Windows Forms), y provee una organización más lógica de características web. Da una experiencia de administración con una interfaz gráfica (GUI) para todas las configuraciones de ASP.NET e IIS:

SSLIISStep0

Para crear un nuevo sitio, clic con el botón derecho en el nodo "Web Sites" en el árbol del lado izquierdo y elegir la opción "Add Web Site" del menu contextual. Añadimos los detalles necesarios para crear el nuevo sitio web:

SSLIISStep1

Una gran característica de IIS7 en Windows Vista es que podemos tener un número ilimitado de sitios web en una caja (las versiones anteriores de IIS en clientes Windows sólo nos permitía un sitio). La limitacion de 10 peticiones simultaneas en las versiones de IIS para clientes Windows no existe ahora en IIS7.

Paso 2: Crear un certificado propio.

Antes de enlazar reglas SSL a nuestro sitio, necesitamos importar e instalar un certificado de seguridad para usarlo en el enlace SSL.

Los certificados se administran en IIS7 haciendo clic en el nodo root del árbol de la izquierda, y seleccionamos el icono "Server Certificates" en el lado derecho:

ssliisstep3

Esto nos mostrará una lista de todos los certificados registrados en la máquina, y nos permitirá importar y/o crear otros nuevos.

Opcionalmente, podemos irnos a una entidad emisora de certificados como Verisign y comprar un certificado para importarlo con esta herramienta de administración. O podermos crear nuestro propio certificado para que funcione como un certificado de prueba que podamos usar para el desarrollo y las pruebas en nuestro sitio. Para hacer esto, tenemos que hacer clic en el link "Create Self-Signed Certificate" en la parte derecha de la herramienta de administración:

ssliisstep4

Metemos el nombre para usar el certificado (por ejemplo: "test") y hacemos clic en ok. IIS7 creará automáticamente un nuevo certificado encriptado y lo registrará en la máquina:

Paso 3: Habilitar los enlaces HTTPS para nuestro nuevo sitio.

Para habilitar SSL en nuestro nuevo sitio web, seleccionamos el nodo del web side en el árbol de la izquierda, y hacemos clic en link "Bindings"del menú "actions" del lado derecho de la pantalla:

Esto nos mostrará un cuadro de dialogo que nos mostrará todas las reglas de enlace que dirigen el tráfico a este sitio (significando las combinaciones de cabeceras host/direcciones ip/puerto para el sitio):

Para habilitar SSL en el sitio, haremos clic en el boton "Add". Esto nos mostrará otro cuadro de dialogo  para añadir soporte para el protocolo HTTPS. Podemos seleccionar el certificado que hemos creado de la lista desplegable del diálogo, para indicar que queremos usar ese certificado cuando encriptemos contenido sobre SSL:

Hacemos clic en OK y ya tenemos habilitado SSL para nuestro sitio:

Paso 4: Probando nuestro sitio.

Añadimos una página "default.aspx" al sitio, e intentamos abrirla con el navegador escribiendo https://localhost/default.aspx (usamos "https" en lugar de "http" para indicar que queremos conectarnos a través de SSL).

Si usamos IE7, vereis el error de anti-phising:

No os alarméis si os pasa esto - tan sólo es el IE que nos advierte que un certificado creado por nosotros es sospechoso. Hacemos clic en el link "Continue to this website" para saltarnos este aviso de seguridad e ir al sitio. Encontraremos nuestra pagina default.aspx  corriendo sobre SSL:

Y ya está echo. :-)

Apendice: Últimas notas sobre SSL.

  • La herramienta de administración de IIS7 tiene un nodo de configuración "SSL Settings" que podemos seleccionar para cada sitio, directorio o archivo que nos permite controlar cuándo, ese recurso particular (y por defecto a todos sus hijos), requiera peticiones SSL para ejecutarse. Esto es muy útil para páginas como login.aspx, cuando queremos garantizar que los usuarios metan sus credenciales cuando el canal esté encriptado. IIS 7 bloqueará a todos lo navegadores que intenten acceder a menos que lo hagan sobre SSL.
  • En una pagina ASP.NET, podemos saber programáticamente, cuándo la petición actual está usando SSL chequeando la propiedad Request.IsSecure (devolverá "true" si la petición viene por SSL).
  • Podemos poner el atributo "requireSSL" en la sección de configuración de <forms> en el web.config para tener el sistema de autentificación por formulario de ASP.NET y asegurarnos que las cookies sólo se usan en sitios con SSL. Esto evita el riesgo de que un hacker intercepte una cookie de autentificación en una página sin SSL, e intente usar el "ataque por repeticion" desde una máquina diferente para suplantar la identidad de un usuario.

 Para más información de IIS/, leeros mi anterior post sobre IIS7. También echadle un vistado a la web www.iis.net.

Para leer mas sobre mis post sobre trucos, visitad mi página sobre trucos

Espero que sirva.

Scott.

Traducido por: Juan María Laó Ramos. Microsoft Student Partner.

15 pensamientos en “Trucos: Habilitar SSL en IIS 7.0 usando certificados firmados por nosotros

  1. heysol

    Estuvo re bueno que buen paro me hiciste una pregunta no sabes donde puedo encontrar certificados gratis para hacer pruebas estuvo re bueno el aporte

    Responder
  2. ae

    Señores, cómo puedo configurar IIS 6.0 y 7.0 con certificados de cliente, sin que haya certificado de servidor (es decir, que no sea https-ssl) ??

    Saludos.

    Responder
  3. Mariano

    Buenas, muy bueno el aporte. Pregunta.. Que pasa si dejo los dos bindings? Se puede entrar por los dos protocolos o uno tiene prioridad sobre el otro? GRACIAS!!
    Saludos, Mariano

    Responder
    1. syscabm

      hola
      ninguna de las herramientas mencionadas son programas, son servicios y tecnologias orientadas a aplicativos web, osea que casi simpre corren en servdiores dedicados, o bueno asi deberia ser, pero eso no quiere decir que para efectos de pruebas, no se pueda hacer sobre un pc.

      SSL: son certifcados digitales ” no programas., que se deben comprar o crear, para el caso de IIS.
      IIS 7:es un servicio de windows y se debe intalar pára poderlo usar.

      Responder
      1. Marcos

        IIS 7.0, o el anterior IIS 6.0 son servidores web y sí los puedes descargar el 6.0 para Windows XP y Windows server 2003, lo encuentras aquí: http://www.softonic.com/s/iis/windows-xp , y el 7.0 para Windows Vista, 7, y Server 2008, lo encuentras en la web de microsoft: http://www.microsoft.com/es-es/download/details.aspx?id=1038.
        para SSL puedes usar las propias opciones del IIS o usar alguna aplicación gratuita como ser OpenSSL.

        Corrigiendo al compañero que respondió anteriormente, IIS no es un servicio, es un servidor web (Internet Information Server), sí presta servicios http o https en caso de SSL.

        Responder
  4. AlejoNait

    Hola, muy interesante el aporte que haces, pero tengo una duda, al momento de configurar el IIS con https ya queda configurado así para subirlo al host, o me toca hacer la misma configuración dentro del host

    Responder
    1. Vitroxwin

      Tu host es para una pagina dinámica y tu configuración es la misma de administrador. Si quieres compartir host, tendrás que montar tantos disco duros virtuales como clientes accedan a tu server web y lo mismo con las base de datos. Pero si te vas hacer una pagina web estática, la puedes diseñar con algún programa y luego subirlo con el servicio ftp o hftps nada mas. Mi respuesta va dirigida para quien se encuentre con la misma duda

      Responder
  5. martin

    Tengo mi Pc publicada via DynDNS y necesito probar ciertas partes de un sitio web usando SSL. El tema es que hago todo esto, pero no funciona.

    Tengo un binding que dice:

    http blabla.dyndns-ip.com 80 ip

    Pero cuando agrego https me deja de andar, es mas, se cae completamente el Sitio Web, y si quito el binding a https arranxca de nuevo.

    Alguien sabe algun truco para poder salir de este lio..
    Gracias.

    Responder
    1. Manuel

      El problema es que tienes un binding para peticiones http (http blabla.dyndns-ip.com 80 ip)
      pero no para peticiones https. Añade el siguiente binding: https blabla.dyndns-ip.com 80 ip

      Responder
  6. Lorenzo

    Hola, tengo una duda….activar el certificado en el servidor IIS proporciona seguridad sobre la identidad de nuestro servidor, pero como hago yo a pedir que el cliente que se conecta a mi pagina me proporcione un certificado suio??…
    Espero que alguien sepa ayudarme….

    Gracias

    Responder

Deja un comentario