SSL Termination en Azure Application Gateway

En un post anterior vimos de qué forma podemos desplegar Azure Application Gateway en una infraestructura sencilla para distribuir el tráfico entre dos servidores:

https://www.azurebrains.com/?p=19771

En esta ocasión seguiremos con el mismo despliegue y vamos a añadir la característica SSL Termination de forma que el acceso a los servidores esté cifrado, pero sin que los propios servidores sean los que tengan que hacer todo el proceso de cifrado/descifrado, sino que de esta tarea se encargará el Application Gateway.

Como en nuestra infraestructura tenemos dos dominios, adatum.com y contoso.com, vamos a crear dos certificados autofirmados, uno para cada dominio. Por supuesto, estos certificados autofirmados harán que nos aparezca un aviso en el navegador y lo ideal sería utilizar certificados confiables, pero para hacer la práctica nos servirán los autofirmados.

Una forma muy simple de crear certificados autofirmados es usando PowerShell. Empezamos con el de adatum.com:

Y repetimos con el de contoso:

Y si abrimos una consola MMC podremos ver en el almacén personal de nuestro equipo estos dos certificados:

Exportamos los dos certificados protegiéndolos con una contraseña:

Como ya tenemos creado el Application Gateway desde el post anterior, solo tenemos que añadir los listeners necesarios para utilizar HTTPS.

Creamos un listener de tipo Multi-site para adatum:

Y una vez creado el listener creamos una regla y la asociamos con el listener:

Y hacemos lo mismo para contoso.com, es decir, creamos un listener y una regla.

Ya podemos acceder a nuestros servidores usando HTTPS:

Como vemos, nos aparece el aviso del navegador por el certificado autofirmado. Si vemos los detalles del certificado:

Y esto se solucionaría usando un certificado emitido por una autoridad certificadora confiable.

Si aceptamos en el navegador, ya podemos acceder al Servidor 1 mediante HTTPS, aunque el propio servidor no implementa este certificado y no se encarga del proceso, sino el Application Gateway:

Y lo mismo para el Servidor 2: