Proporcione seguridad para un nombre DNS personalizado con un enlace TLS/SSL en App Service
Este artículo le muestra cómo proporcionar seguridad al dominio personalizado de su aplicación de App Service o aplicación de funciones creando un enlace de certificados. 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
).
Requisitos previos
- Escale verticalmente la aplicación de App Service a uno de los planes de tarifa compatibles: Básico, Estándar y Premium.
- Asignar un nombre de dominio a su aplicación o comprarla y configurarla en Azure.
Adición del enlace
En el Portal de Azure:
En el menú de la izquierda, seleccione App Services><nombre-de-aplicación>.
En el panel de navegación izquierdo de la aplicación, seleccione Dominios personalizados.
Junto al dominio personalizado, seleccione Agregar enlace.
Si la aplicación ya tiene un certificado para el dominio personalizado seleccionado, puede seleccionarlo en Certificado. Si no es así, debe agregar un certificado mediante una de las selecciones de Origen.
- Crear certificado administrado de App Service: deje que App Service cree un certificado administrado para el dominio seleccionado. Esta opción es la más sencilla. Para obtener más información, consulte Creación de un certificado administrado gratuito.
- Importar App Service Certificate: en App Service Certificate, elija un certificado de App Service que haya comprado para el dominio seleccionado.
- Cargar certificado (.pfx): siga el flujo de trabajo en Cargar un certificado privado para cargar un certificado PFX desde el equipo local y especifique la contraseña del certificado.
- Importar desde Key Vault: seleccione Seleccionar certificado del almacén de claves y seleccione el certificado en el cuadro de diálogo.
En Tipo de TLS/SSL, seleccione SSL SNI o SSL basado en IP.
- SSL SNI: se pueden agregar varios enlaces SSL SNI. Esta opción permite que varios certificados TLS/SSL protejan diferentes dominios de una misma dirección IP. La mayoría de los exploradores modernos (incluidos Microsoft Edge, Chrome, Firefox y Opera) admiten SNI. (Para más información, consulte Indicación de nombre de servidor).
- SSL basado en IP: solo se puede agregar un enlace SSL de IP. Esta opción solo permite que un único certificado TLS/SSL proteja una dirección IP pública dedicada. Tras configurar el enlace, siga los pasos descritos en Reasignación de registros para SSL basado en IP.
SSL basado en IP solo se admite en el nivel Estándar o superior.
Al agregar un nuevo certificado, valide el nuevo certificado seleccionando Validar.
Seleccione Agregar.
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 un certificado proporciona seguridad, pero App Service no comprueba si el certificado está autofirmado o caducado, por ejemplo, lo que también puede hacer que los exploradores muestren un error o una advertencia.
Reasignación de registros para SSL basado en IP
Este paso solo es necesario para SSL basado en IP. Para un enlace SSL SNI, vaya a Probar HTTPS.
Hay potencialmente dos cambios que debe realizar:
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 reasigne el registro A 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.net
en su lugar. (Agregue el prefijosni
).
Probar HTTPS
Vaya a https://<your.custom.domain>
en varios exploradores para comprobar que aparece la aplicación.
El código de la aplicación puede inspeccionar el protocolo mediante el encabezado x-appservice-proto
. El encabezado tiene 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.
Preguntas más frecuentes
- ¿Cómo asegurarse de que la dirección IP de la aplicación no cambia al realizar cambios en el enlace de certificado?
- ¿Puedo deshabilitar la redirección forzada de HTTP a HTTPS?
- ¿Cómo puedo cambiar las versiones mínimas de TLS para la aplicación?
- ¿Cómo controlar la terminación TLS en App Service?
¿Cómo asegurarse de que la dirección IP de la aplicación no cambia al realizar cambios en el enlace de certificado?
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.
¿Puedo deshabilitar la redirección forzada de HTTP a HTTPS?
De manera predeterminada, App Service fuerza una redirección de solicitudes HTTP a HTTPS. Para deshabilitar este comportamiento, consulte Configuración general.
¿Cómo puedo cambiar las versiones mínimas de TLS para la aplicación?
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 aplicar diferentes versiones de TLS, consulte Configuración general.
¿Cómo controlar la terminación TLS en App Service?
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 la 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.
Automatizar con scripts
Azure CLI
Enlace de un certificado TLS/SSL personalizado a una aplicación web
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.
$webapp = New-AzWebApp -Name $webappname -Location $location -AppServicePlan $webappname `
-ResourceGroupName $webappname
Write-Host "Sign in to your domain provider's website and configure the following records:"
Write-Host "A CNAME record that maps $fqdn to $webappname.azurewebsites.net"
Write-Host "A TXT record that maps asuid.$fqdn to the domain verification ID $($webapp.CustomDomainVerificationId)"
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