Compartir vía


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

Aplicación web con certificado TLS/SSL personalizado.

Requisitos previos

Adición del 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.

    Captura de pantalla en la que se muestra cómo iniciar el cuadro de diálogo Agregar enlace TLS/SSL.

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

    Captura de pantalla en la que se muestra el dominio personalizado protegido por un enlace de certificado.

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 a sni.<app-name>.azurewebsites.net en su lugar. (Agregue el prefijo sni ).

Probar HTTPS

Vaya a https://<your.custom.domain> en varios exploradores para comprobar que aparece la aplicación.

Captura de pantalla que muestra un ejemplo de cómo navegar hasta el dominio personalizado. La dirección URL de contoso.com está resaltada.

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?

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