Protección de un nombre DNS personalizado con un enlace TLS/SSL en Azure App Service
En este artículo se muestra cómo proteger el dominio personalizado de la aplicación de App Service o de la aplicación de funciones mediante la creación de un enlace de certificado. Cuando haya terminado, podrá acceder a la aplicación de App Service en el punto de conexión https:// del nombre DNS personalizado (por ejemplo, https://www.contoso.com).

La protección de un dominio personalizado con un certificado implica dos pasos:
- Agregar un certificado privado a App Service que cumpla todos los requisitos de los certificados privados.
- Crear un enlace TLS al dominio personalizado correspondiente. En este artículo se trata este segundo paso.
En este tutorial, aprenderá a:
- Actualizar el plan de tarifa de la aplicación
- Proteger un dominio personalizado con un certificado
- Aplicación de HTTPS
- Aplicación de TLS 1.1 y 1.2
- Automatización de la administración de TLS con scripts
Prerrequisitos
Para completar esta guía paso a paso, debe:
- Crear una aplicación de App Service
- Asignar un nombre de dominio a su aplicación o comprarla y configurarla en Azure
- Agregar un certificado privado a la aplicación
Nota
La forma más fácil de agregar un certificado privado es crear un certificado administrado de App Service gratuito.
Preparar la aplicación web
Para crear enlaces de TLS o SSL personalizados o habilitar certificados de cliente para la aplicación de App Service, el plan de App Service debe ser de nivel Básico, Estándar, Premium o Aislado. En este paso, asegúrese de que la aplicación web se encuentra en el plan de tarifa compatible.
Inicio de sesión en Azure
Abra Azure Portal.
Navegar a la aplicación web
Busque y seleccione App Services.

En la página App Services, seleccione el nombre de la aplicación web.

Ha llegado a la página de administración de la aplicación web.
Comprobar el plan de tarifa
En el panel de navegación izquierdo de la página de la aplicación web, desplácese a la sección Configuración y seleccione Escalar verticalmente (plan de App Service) .

Asegúrese de que la aplicación web no está en el nivel F1 ni D1. El nivel actual de la aplicación web aparece resaltado con un cuadro azul oscuro.

El SSL personalizado no es compatible con los niveles F1 y D1. Si tiene que escalar verticalmente, siga los pasos de la sección siguiente. De lo contrario, cierre la página Escalar verticalmente y omita la sección Scale up your App Service plan (Escalado vertical del plan de App Service).
Escalar verticalmente el plan de App Service
Seleccione cualquiera de los niveles no gratuitos (B1, B2, B3, o cualquier nivel de la categoría Producción). Para ver opciones adicionales, haga clic en Ver opciones adicionales.
Haga clic en Aplicar.

Cuando vea la siguiente notificación, significará que la operación de escalado se habrá completado.

Protección de un dominio personalizado
Siga estos pasos:
En Azure Portal, en el menú de la izquierda, seleccione App Services > <app-name> .
En el panel de navegación izquierdo de la aplicación, inicie el cuadro de diálogo Enlace TLS/SSL de la siguiente manera:
- Seleccione Dominios personalizados > Agregar enlace
- Seleccione Configuración de TLS/SSL > Agregar enlace TLS/SSL

En Dominio personalizado, seleccione el dominio personalizado para el que desea agregar un enlace.
Si la aplicación ya tiene un certificado para el dominio personalizado seleccionado, vaya directamente a Crear enlace. De lo contrario, continúe.
Adición de un certificado para el dominio personalizado
Si la aplicación no tiene ningún certificado para el dominio personalizado seleccionado, tiene dos opciones:
- Cargar certificado PFX: siga el flujo de trabajo de Carga de un certificado privado y, a continuación, seleccione esta opción aquí.
- Importar certificado de App Service: siga el flujo de trabajo de Importación de un certificado de App Service y, a continuación, seleccione esta opción aquí.
Nota
También puede crear un certificado gratuito o importar un certificado de Key Vault, pero debe hacerlo por separado y después volver al cuadro de diálogo Enlace TLS/SSL.
Creación del enlace
Utilice la siguiente tabla como ayuda para configurar el enlace TLS en el cuadro de diálogo Enlace TLS/SSL y haga clic en Agregar enlace.
| Configuración | Descripción |
|---|---|
| Dominio personalizado | Nombre de dominio para el que se agrega el enlace TLS/SSL. |
| Huella digital de certificado privado | El certificado a enlazar. |
| Tipo de TLS/SSL |
|
Una vez completada la operación, el estado TLS/SSL del dominio personalizado cambia a Seguro.

Nota
Un estado Seguro en Dominios personalizados significa que está protegido con un certificado, pero App Service no comprueba si el certificado es autofirmado o ha expirado, por ejemplo, lo que también puede provocar que los exploradores muestren un error o una advertencia.
Reasignación de registros para SSL de IP
Si no usa SSL de IP en la aplicación, vaya directamente a Probar HTTPS para el dominio personalizado.
Puede realizar dos cambios:
De manera predeterminada, la aplicación usa una dirección IP pública compartida. Cuando se enlaza un certificado con SSL de IP, App Service crea una dirección IP dedicada nueva para la aplicación. Si asignó un registro D a la aplicación, actualice el registro de dominio con esta nueva dirección IP dedicada.
La página Dominio personalizado de la aplicación se actualiza con la nueva dirección IP dedicada. Copie esta dirección IP y luego reasigne el registro D a esta nueva dirección IP.
Si tiene un enlace SNI SSL para
<app-name>.azurewebsites.net, reasigne la asignación CNAME para que apunte asni.<app-name>.azurewebsites.neten su lugar (agregue el prefijosni).
Probar HTTPS
En varios exploradores, vaya a https://<your.custom.domain> para comprobar que da servicio a la aplicación.
El código de aplicación puede inspeccionar el protocolo mediante el encabezado "x-appservice-proto". El encabezado tendrá un valor de http o https.
Nota
Si la aplicación genera errores de validación del certificado, probablemente esté utilizando un certificado autofirmado.
Si no es así, puede que haya olvidado certificados intermedios cuando exportó el certificado al archivo PFX.
Prevención de cambios de IP
La dirección IP de entrada puede cambiar al eliminar un enlace, incluso si este es un enlace SSL de IP. Esto es especialmente importante al renovar un certificado que ya está en un enlace SSL de IP. Para evitar un cambio en la dirección IP de su aplicación, siga estos pasos en orden:
- Carga el nuevo certificado.
- Enlaza el nuevo certificado al dominio personalizado que desee sin eliminar el antiguo. Esta acción reemplaza el enlace en lugar de quitar el antiguo.
- Elimine el antiguo certificado.
Aplicación de HTTPS
De forma predeterminada, cualquier usuario puede acceder todavía a su aplicación mediante HTTP. Puede redirigir todas las solicitudes HTTP al puerto HTTPS.
En la página de la aplicación, en el panel de navegación de la izquierda, seleccione Configuración de TLS/SSL. A continuación, en Solo HTTPS, seleccione On.

Una vez completada la operación, vaya a cualquiera de las direcciones URL HTTP que apuntan a la aplicación. Por ejemplo:
http://<app_name>.azurewebsites.nethttp://contoso.comhttp://www.contoso.com
Exigencia de las versiones TLS
La aplicación permite TLS 1.2 de forma predeterminada, que es el nivel TLS recomendado por los estándares del sector, como PCI DSS. Para exigir versiones diferentes de TLS, siga estos pasos:
En la página de la aplicación, en el panel de navegación de la izquierda, seleccione Configuración de TLS/SSL. A continuación, en TLS version (Versión de TLS), seleccione la versión mínima de TLS que desee. Esta configuración controla solo las llamadas entrantes.

Una vez completada la operación, la aplicación rechaza todas las conexiones con versiones inferiores de TLS.
Administración de terminaciones TLS
En App Service, la terminación TLS tiene lugar en los equilibradores de carga de red, por lo que todas las solicitudes HTTPS llegan a la aplicación en forma de solicitudes HTTP sin cifrar. Si su aplicación lógica necesita comprobar si las solicitudes de usuario están cifradas, inspeccione el encabezado X-Forwarded-Proto.
Guías de configuración específicas del lenguaje, como la guía Configuración de Node.js en Linux, que muestra cómo detectar una sesión HTTPS en el código de la aplicación.
Renovación del enlace con certificados
Nota
Para renovar un certificado de App Service que compró, consulte Exportar un certificado (de App Service). Los certificados de App Service se pueden renovar así como el enlace se puede sincronizar, todo de forma automática.
Para reemplazar un certificado que expira, la forma de actualizar el enlace de certificado con el nuevo certificado puede afectar negativamente a la experiencia del usuario. Por ejemplo, su dirección IP de entrada puede cambiar al eliminar un enlace, incluso si este se basa en IP. Esto es especialmente importante al renovar un certificado que ya está en un enlace basado en IP. Para evitar modificaciones en la dirección IP de la aplicación y que el tiempo de inactividad de la aplicación aumente, siga estos pasos en orden:
- Carga el nuevo certificado.
- Enlace el nuevo certificado al mismo dominio personalizado sin eliminar el certificado existente (que expira). Esta acción reemplaza el enlace en lugar de quitar el que ya existe.
- Elimine el certificado existente.
Automatizar con scripts
Azure CLI
#!/bin/bash
fqdn=<replace-with-www.{yourdomain}>
pfxPath=<replace-with-path-to-your-.PFX-file>
pfxPassword=<replace-with-your=.PFX-password>
resourceGroup=myResourceGroup
webappname=mywebapp$RANDOM
# Create a resource group.
az group create --location westeurope --name $resourceGroup
# Create an App Service plan in Basic tier (minimum required by custom domains).
az appservice plan create --name $webappname --resource-group $resourceGroup --sku B1
# Create a web app.
az webapp create --name $webappname --resource-group $resourceGroup \
--plan $webappname
echo "Configure a CNAME record that maps $fqdn to $webappname.azurewebsites.net"
read -p "Press [Enter] key when ready ..."
# Before continuing, go to your DNS configuration UI for your custom domain and follow the
# instructions at https://aka.ms/appservicecustomdns to configure a CNAME record for the
# hostname "www" and point it your web app's default domain name.
# Map your prepared custom domain name to the web app.
az webapp config hostname add --webapp-name $webappname --resource-group $resourceGroup \
--hostname $fqdn
# Upload the SSL certificate and get the thumbprint.
thumbprint=$(az webapp config ssl upload --certificate-file $pfxPath \
--certificate-password $pfxPassword --name $webappname --resource-group $resourceGroup \
--query thumbprint --output tsv)
# Binds the uploaded SSL certificate to the web app.
az webapp config ssl bind --certificate-thumbprint $thumbprint --ssl-type SNI \
--name $webappname --resource-group $resourceGroup
echo "You can now browse to https://$fqdn"
PowerShell
$fqdn="<Replace with your custom domain name>"
$pfxPath="<Replace with path to your .PFX file>"
$pfxPassword="<Replace with your .PFX password>"
$webappname="mywebapp$(Get-Random)"
$location="West Europe"
# Create a resource group.
New-AzResourceGroup -Name $webappname -Location $location
# Create an App Service plan in Free tier.
New-AzAppServicePlan -Name $webappname -Location $location `
-ResourceGroupName $webappname -Tier Free
# Create a web app.
New-AzWebApp -Name $webappname -Location $location -AppServicePlan $webappname `
-ResourceGroupName $webappname
Write-Host "Configure a CNAME record that maps $fqdn to $webappname.azurewebsites.net"
Read-Host "Press [Enter] key when ready ..."
# Before continuing, go to your DNS configuration UI for your custom domain and follow the
# instructions at https://aka.ms/appservicecustomdns to configure a CNAME record for the
# hostname "www" and point it your web app's default domain name.
# Upgrade App Service plan to Basic tier (minimum required by custom SSL certificates)
Set-AzAppServicePlan -Name $webappname -ResourceGroupName $webappname `
-Tier Basic
# Add a custom domain name to the web app.
Set-AzWebApp -Name $webappname -ResourceGroupName $webappname `
-HostNames @($fqdn,"$webappname.azurewebsites.net")
# Upload and bind the SSL certificate to the web app.
New-AzWebAppSSLBinding -WebAppName $webappname -ResourceGroupName $webappname -Name $fqdn `
-CertificateFilePath $pfxPath -CertificatePassword $pfxPassword -SslState SniEnabled