Terminador SSL con Azure Application Gateway

En este post quiero hablarte de cómo Application Gateway también puede actuar de terminador SSL ¿Esto qué quiere decir? Básicamente que te ayuda a tener conexiones seguras desde el cliente al backend, cifrando las peticiones en tránsito. Te ayuda además a liberar a los servidores del backend del proceso de cifrado y descifrado de los mensajes, el cual suele ser bastante costoso.

SSL termination proxy – Wikipedia

Cuando configuramos Application Gateway con SSL este termina las sesiones SSL en el gateway y descifra el tráfico del usuario. Después utiliza las reglas configuradas para elegir a qué backend pool debe enrutar el tráfico, hace la petición al backend y vuelve a cifrar los datos utilizando el certificado de clave pública, configurado previamente, antes de transmitir dicha petición.

App Gateway – Concepts

La forma de configurar esta característica es bastante sencilla:

Crea un certificado autofirmado

Existe una forma súper sencilla de crear certificados autofirmados desde PowerShell y es utilizando el comando New-SelfSignedCertificate:

New-SelfSignedCertificate `
  -certstorelocation cert:\localmachine\my `
  -dnsname www.azuredemo.es

Al lanzar New-SelfSignedCertificate crearás dicho certificado en tu máquina y te devolverá el thumbprint del mismo. Con este debes lanzar el siguiente comando para exportar la clave pública que necesitarás importar a Application Gateway:

$pwd = ConvertTo-SecureString -String "Azure123456!" -Force -AsPlainText
Export-PfxCertificate `
  -cert cert:\localMachine\my\E1E81C23B3AD33F9B4D1717B20AB65DBB91AC630 `
  -FilePath c:\appgwcert.pfx `
  -Password $pwd

El resultado será guardado en c:\

Generar self-signed certificate

Crear listener y rule

Para este post vamos a utilizar el Application Gateway que creamos en el post anterior, por lo que si no lo tienes creado puedes seguir los mismos pasos que te conté ayer. Accede al apartado Listeners y haz clic en la opción Basic.

App Gateway – Listeners – Basic

 

Elige un nombre para el listener, un nombre para el frontend port y el puerto 443. Selecciona la opción HTTPS e importa el certificado que creaste en el paso anterior.

App Gateway – HTTPS Listener

(Es posible que tarde en actualizar unos segundos…)

Una vez que se haya generado el nuevo listener, crea una regla de tipo básica que asocie el listener al backend pool al cual debe redirigirse.

App Gateway – Basic rule – httpsRule

En este caso, el backend pool está asociado a un Http Setting que se comunica con el mismo a través del puerto 80. Por supuesto, también sería posible que App Gateway se conecte al backend a través del puerto 443 con su certificado correspondiente, teniendo un cifrado de extremo a extremo.

Para comprobar que la configuración es correcta, accede a través del navegador a tu Application Gateway utilizando https en lugar de http.

App Gateway – SSL Termination resultado

¡Saludos!