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 …
- 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/
- 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»
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<em><code>[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</code></em> |
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:
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
- 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:
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:
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
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
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.