¿Qué es SSL?
SSL es un protocolo que permite la comunicación de nuestro navegador con el servidor a través de un canal seguro. Este canal seguro se consigue encriptando las comunicaciones y su función es impedir que terceras personas intercepten lo que estamos enviando y nos espíen para conseguir nuestros datos privados.
En general, distinguiremos si estamos accediendo a una página web sobre SSL cuando utilicemos el protocolo https en lugar de http. Además, nuestro navegador generalmente recalcará que la página web es segura mediante un icono de un candado, en el que podemos pinchar para ver en detalle la información sobre el certificado de seguridad del sitio web al que accedemos.
¿Y cómo se activa el soporte https para páginas web en el IIS?
Pues en realidad no es muy complicado, sólo hay que seguir los siguientes pasos:
- En la consola de administración del IIS, hay que pinchar en propiedades del «Sitio Web predeterminado» (Default Web Site) y después, en la pestaña de Seguridad, pincharemos en «Certificado de servidor…» (Server Certificate…).
- Habremos abierto un asistente, en el que tendremos que seleccionar «Crear un certificado nuevo» (Create a new certificate) y en la siguiente pantalla «Preparar la petición ahora pero enviarla más tarde» (Prepare the request now, but send it later).
- A continuación escogemos como longitud de clave 2048 bits y rellenamos todos los datos necesarios, obteniendo, al final, una petición de certificado «certreq.txt«.
- Para obtener un certificado para nuestro servidor, tendríamos que contactar con una empresa que los emita o bien, si sólo lo queremos para probar, podemos emitir nuestro propio certificado. Usaremos para ello OpenSSL, que es una de las aplicaciones más utilizadas para este cometido.Se puede descargar de aquí y si no, podéis encontrarlo en Google buscando la cadena «win32 OpenSSL«,
- Una vez instalado, seguiremos la siguiente secuencia de comandos para crear el certificado:
- Primero hay que generar la clave privada. Lo haremos a través del siguiente comando. Nos pedirá una contraseña para proteger la clave.
openssl genrsa -des3 -out clavePrivada.pem 2048
- A continuación creamos el certificado digital rellenando toda la información que se nos pide por pantalla. El 3650 quiere decir que el certificado será válido durante 10 años.
openssl req -new -x509 -key clavePrivada.pem -out certificado.pem -days 3650
- Por último, crearemos el certificado digital para nuestro sitio web.
openssl x509 -req -days 3650 -in certreq.txt -CA certificado.pem -CAkey clavePrivada.pem -CAcreateserial -out certificado.crt
- Primero hay que generar la clave privada. Lo haremos a través del siguiente comando. Nos pedirá una contraseña para proteger la clave.
- Ahora que ya tenemos nuestro certificado digital, podemos volver a abrir la ventana de certificados del IIS seleccionando esta vez la opción de «Procesar la petición pendiente e instalar el certificado«.
- En la siguiente pantalla indicaremos la ruta del certificado que acabamos de crear (certificado.cer) y damos por finalizado el proceso.
Ahora que tenemos nuestro certificado digital funcionando, deberíamos poder acceder a nuestras páginas tanto por http como por https. Si queremos permitir el acceso a una determinada aplicación o página web únicamente a través de https, seguiremos los siguientes pasos:
- Pincharemos en las propiedades de la aplicación o página web en la consola de administración del IIS.
- En la pestaña de seguridad pulsaremos el botón editar en el apartado «Comunicaciones seguras«y marcaremos la casilla «Requerir canal seguro (SSL)» (Require secure channel (SSL)).
Al acceder a cualquiera de nuestras páginas a través de https, observaremos que el navegador nos lanza una alerta que dice que hay problemas con el certificado, ya que este no puede ser comprobado a través de ninguna entidad certificadora. Como esto es un certificado digital únicamente para hacer pruebas no hay nada más que hacer. Si no queremos comprar un certificado digital real, la única opción que nos queda es la de ignorar el mensaje de alerta y todo listo.