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: