Securiza tus dominios de tus Web Apps de Azure con HTTPS.

Buenos dias,

Una práctica habitual es la de securizar los dominios de nuestras aplicaciones web a través de un certificado SSL. Hoy vamos a ver cómo habilitar HTTPS para nuestra aplicación web con dominio personalizado.

¿Qué necesitamos?

  • Configurar el dominio personalizado en nuestra Web App de Azure.- Desde el portal de Azure, Web Apps, “Custom domains” o dominios personalizados …. aqui tenemos que tener nuestro dominio, por ejemplo: www.xyz.es …

generateCSRAzure000

  • Tener un Plan de Servicio acorde a las necesidades.- Me refiero que hay que tener o escalar a un plan de servicio que soporte certificados SSL. Podemos ver en este linnk los precios y características de ls Service Plans de Azure: https://azure.microsoft.com/en-us/pricing/details/app-service/plans/

generateCSRAzure000a

  • Obtener un certificado SSL.-Si no lo tenemos, necestiaremos un certificado SSL emitido por una Entidad  Certificadora oficial con los siguientes requerimientos:
    • Que esté firmado por una Entidad Certificadora Oficial.
    • Que contenga la clave privada (importante).
    • Que esté creado en formato de intercambio de claves y sea exportable, vamos .PFX.
    • Que utilice, como mínimo, un cifrado de 2048 bits.
    • Que el nombre del asunto coincida con el del dominio personalizado (no entrea a valorar certificados Wildcard *).
    • Que combine todos los certificados intermedios utilizados. Para que no haya ningún salto de confiabilidad.

Y eso es lo que os voy a explicar …

Step 1. Creación de Petición para la CA (Certificate request = csr).

Vamos a realizar este paso directamente desde nuestro equipo utilizando la herramienta Certreq.exe.

  • Creamos un fichero de texto con todos los datos importantes que va a contener la petición como el nombre del certificado, Unidad Organizativa, cifrado, exportable y, sobre todo el OID para “Server Authentication”
[NewRequest]
Subject = "CN=<your-domain>"  ; E.g. "CN=www.contoso.com", or "CN=*.contoso.com" for a wildcard certificate
Exportable = TRUE
KeyLength = 2048              ; Required minimum is 2048
KeySpec = 1
KeyUsage = 0xA0
MachineKeySet = True
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
ProviderType = 12
HashAlgorithm = SHA256

[EnhancedKeyUsageExtension]
OID=1.3.6.1.5.5.7.3.1         ; Server Authentication

Le damos un mobre a nuestro fichero, por ejemplo, NewRequest.txt

  • Abriremos una consola (CD) y ejecutaremos el siguiente comando:

certreq -new \path\to\myrequest.txt  \path\to\create\myrequest.csr

siguiendo con nuestro ejemplo, ejecutaremos:

generateCSRAzure0002

Vemos que nos ha generado nuestro fichero csr que es el que tenemos que enviar a la Entidad Certificadora para que nos devuelva el certificado a desplegar en nuestro Web Site

generateCSRAzure0003

  • Enviar a la Entidad Certificadora (CA) nuestro fichero newrequest.csr  para que nos devuelva el certificado SSL a desplegar en nuestro Web Site. En unos casos habrá que cargar el archivo en un formulario web y en otros enviarlo por correo y esperar respuesta.

No hay que olvidarse de que si la CA utilizada Entidades Certificadoras Intermediarias, habrá que bajarse toda la cadena de certificados.

Step 2. Instalación de Certificado expedido por la CA.

Si abrimos una consola (mmc), con el Snap-in de Certificados, podemos observar que estamos a la espera de recibir el fichero, normalmente en formato .P7b, de la entidad Certificadora del certificado que hemos generado:

generateCSRAzure0010

Una vez la CA nos ha respondido guardamos dicho fichero en nuestro directorio de trabajo y ejecutaremos el siguiente comando

certreq -Accept C:\temp\Certs\cert.p7b

Este comando almacenará el certificado en el almacén de certificados de Windows. A través de nuestra consola (mmc) podemos observar que la solicitud de certificados ha desaparecido y se ha convertido en un Certificado SSL:

generateCSRAzure0011

Step 3: Exportación del Certificado.

Ahora, lo que necesitamos es exportar este cerfificado con formato .pfx, clave pública y clave privada. Desde la misma consola de Certificados, nos situamos encima del certificado, botón derecho, Todas las tareas, Exportar Certificado. Nos lanzara un asistente de exportación. Siguiente, y seleccionaremos que queremos exportar la clave privada:

Despues, seleccionaremos que se incluya toda la cadena de certificados en el mismo fichero y que se exporten todas las propiedades del mismo:

introduciremos una contraseña….

Y, para finalizar, escribimos el nombre del certificado.

Step 4: Importación en Azure.

Ahora, desde el portal de azure (https://portal.azure.com), accederemos a las Web Apps, al Web Site que queremos importar el certificado

generateCSRAzure0012

Accederemos a Certificados SSL y seleccionaremos “Cargar certificado“. Seleccionaremos nuestro certificado (archivo .pfx) y especificaremos la contraseña del paso 3. Una vez cargado el certificado tenemos que enlazarlo a nuestro Web App

generateCSRAzure0013

Agregaremos el enlace SSL y utilizaremos los menus desplegables para seleccionar el nombre de dominio que va a proteger con SSL, así como el certificado que pretende utilizar. Es posible que también queramos seleccionar el uso de Indicación de nombre de servido (SNI) o SSL basada en IP, dependiendo de nuestras necesidades.

Las principales diferencias entre uno y otro,  SSL basada en IP asocia un certificado a un nombre de dominio mediante la asignación de una dirección IP pública dedicada del servidor al nombre de dominio.En este caso es necesario que cada nombre de dominio (contoso.com, fabrikam.com, etc.) asociado a un servicio tenga una dirección IP dedicada. Este es el método tradicional de asociación de certificados SSL a un servidor web, y SSL basada en SNI es una extensión de SSL y TLS que permite que varios dominios compartan la misma dirección IP con certificados de seguridad independientes para cada dominio. Los exploradores más modernos (entre los que se incluyen Internet Explorer, Chrome, Firefox y Opera) son compatibles con la extensión SNI.

Solo nos quedaría comprobar que nuestra Web App ya tiene acceso por HTTPS.

Links interesantes:

Que tengais una buena semana.

También te podría gustar...