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).

Web app with custom TLS/SSL certificate

Requisitos previos

1. Agregar el enlace

En el Portal de Azure:

  1. En el menú de la izquierda, seleccione App Services><nombre-de-aplicación>.

  2. En el panel de navegación izquierdo de la aplicación, seleccione Dominios personalizados.

  3. Junto al dominio personalizado, seleccione Agregar enlace.

    A screenshot showing how to launch the Add TLS/SSL Binding dialog.

  4. 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.
  5. En Tipo TLS/SSL, elija entre SSL SNI y SSL basada 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 Internet Explorer, Chrome, Firefox y Opera) admiten SNI (para más información, consulte Server Name Indication [Indicación del nombre del 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 2. Reasignación de registros para SSL basado en IP.
        SSL de IP solo se admite en el nivelBásico o superior.
  6. Al agregar un nuevo certificado, valide el nuevo certificado seleccionando Validar.

  7. Seleccione Agregar.

    Una vez completada la operación, el estado TLS/SSL del dominio personalizado cambia a Seguro.

    A screenshot showing the custom domain secured by a certificate binding.

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.

2. Reasignar registros para SSL basada en IP

Este paso solo es necesario para SSL basada en IP. Para un enlace SSL SNI, vaya 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 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 a sni.<app-name>.azurewebsites.net en su lugar (agregue el prefijo sni).

3. Probar HTTPS

En varios exploradores, vaya a https://<your.custom.domain> para comprobar que da servicio a la aplicación.

Screenshot showing an example of browsing to your custom domain with the contoso.com URL highlighted.

El código de 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?

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:

  1. Carga el nuevo certificado.
  2. 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.
  3. 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 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.

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

Más recursos