Tutorial: Enlazar un certificado SSL personalizado a Azure App ServiceTutorial: Bind an existing custom SSL certificate to Azure App Service

Azure App Service proporciona un servicio de hospedaje web muy escalable y con aplicación de revisiones de un modo automático.Azure App Service provides a highly scalable, self-patching web hosting service. En este tutorial se muestra cómo enlazar un certificado SSL personalizado adquirido a una entidad de certificación de confianza para Azure App Service.This tutorial shows you how to bind a custom SSL certificate that you purchased from a trusted certificate authority to Azure App Service. Cuando haya terminado, podrá acceder a la aplicación en el punto de conexión HTTPS de su dominio DNS personalizado.When you're finished, you'll be able to access your app at the HTTPS endpoint of your custom DNS domain.

Aplicación web con certificado SSL personalizado

En este tutorial, aprenderá a:In this tutorial, you learn how to:

  • Actualizar el plan de tarifa de la aplicaciónUpgrade your app's pricing tier
  • Enlazar el certificado personalizado con App ServiceBind your custom certificate to App Service
  • Renovar certificadosRenew certificates
  • Aplicación de HTTPSEnforce HTTPS
  • Aplicación de TLS 1.1 y 1.2Enforce TLS 1.1/1.2
  • Automatización de la administración de TLS con scriptsAutomate TLS management with scripts

Nota

Si necesita un certificado SSL personalizado, puede obtener uno directamente en Azure Portal y enlazarlo a la aplicación.If you need to get a custom SSL certificate, you can get one in the Azure portal directly and bind it to your app. Siga el tutorial Incorporación de un certificado SSL a la aplicación App Service.Follow the App Service Certificates tutorial.

Requisitos previosPrerequisites

Para completar este tutorial:To complete this tutorial:

Requisitos para el certificado SSLRequirements for your SSL certificate

Para usar un certificado en App Service, el certificado debe cumplir los siguientes requisitos:To use a certificate in App Service, the certificate must meet all the following requirements:

  • Estar firmado por una entidad de certificación de confianzaSigned by a trusted certificate authority
  • Haberse exportado como archivo PFX protegido por contraseñaExported as a password-protected PFX file
  • Contener una clave privada con una longitud de al menos 2048 bitsContains private key at least 2048 bits long
  • Contener todos los certificados intermedios de la cadena de certificadosContains all intermediate certificates in the certificate chain

Nota

Los certificados de criptografía de curva elíptica (ECC) pueden funcionar con App Service, pero están fuera del ámbito de este artículo.Elliptic Curve Cryptography (ECC) certificates can work with App Service but are not covered by this article. Trabaje con la entidad de certificación sobre los pasos exactos para crear certificados ECC.Work with your certificate authority on the exact steps to create ECC certificates.

Preparar la aplicación webPrepare your web app

Para enlazar un certificado SSL personalizado (un certificado de terceros o un certificado de App Service) a la aplicación web, su plan de App Service debe estar en el nivel Básico, Estándar, Premium o Aislado.To bind a custom SSL certificate (a third-party certificate or App Service certificate) to your web app, your App Service plan must be in the Basic, Standard, Premium, or Isolated tier. En este paso, asegúrese de que la aplicación web se encuentra en el plan de tarifa compatible.In this step, you make sure that your web app is in the supported pricing tier.

Inicio de sesión en AzureLog in to Azure

Abra Azure Portal.Open the Azure portal.

En el menú izquierdo, haga clic en App Services y luego en el nombre de la aplicación web.From the left menu, click App Services, and then click the name of your web app.

Seleccionar la aplicación web

Ha llegado a la página de administración de la aplicación web.You have landed in the management page of your web app.

Comprobar el plan de tarifaCheck the pricing tier

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).In the left-hand navigation of your web app page, scroll to the Settings section and select Scale up (App Service plan).

Menú Escalar verticalmente

Asegúrese de que la aplicación web no está en el nivel F1 ni D1.Check to make sure that your web app is not in the F1 or D1 tier. El nivel actual de la aplicación web aparece resaltado con un cuadro azul oscuro.Your web app's current tier is highlighted by a dark blue box.

Comprobar plan de tarifa

El SSL personalizado no es compatible con los niveles F1 y D1.Custom SSL is not supported in the F1 or D1 tier. Si tiene que escalar verticalmente, siga los pasos de la sección siguiente.If you need to scale up, follow the steps in the next section. 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).Otherwise, close the Scale up page and skip the Scale up your App Service plan section.

Escalar verticalmente el plan de App ServiceScale up your App Service plan

Seleccione cualquiera de los niveles no gratuitos (B1, B2, B3, o cualquier nivel de la categoría Producción).Select any of the non-free tiers (B1, B2, B3, or any tier in the Production category). Para ver opciones adicionales, haga clic en Ver opciones adicionales.For additional options, click See additional options.

Haga clic en Aplicar.Click Apply.

Elegir plan de tarifa

Cuando vea la siguiente notificación, significará que la operación de escalado se habrá completado.When you see the following notification, the scale operation is complete.

Notificación de escalado vertical

Enlazar el certificado SSLBind your SSL certificate

Está preparado para cargar el certificado SSL en la aplicación.You are ready to upload your SSL certificate to your app.

Combinación de certificados intermediosMerge intermediate certificates

Si la entidad emisora de certificados ofrece varios certificados en la cadena de certificados, debe combinar los certificados en orden.If your certificate authority gives you multiple certificates in the certificate chain, you need to merge the certificates in order.

Para ello, abra cada certificado que ha recibido en un editor de texto.To do this, open each certificate you received in a text editor.

Cree un archivo para el certificado combinado, denominado mergedcertificate.crt.Create a file for the merged certificate, called mergedcertificate.crt. En un editor de texto, copie el contenido de cada certificado en este archivo.In a text editor, copy the content of each certificate into this file. Los certificados deben seguir el orden de la cadena de certificados, comenzando por el certificado y terminando por el certificado raíz.The order of your certificates should follow the order in the certificate chain, beginning with your certificate and ending with the root certificate. Debe ser similar al ejemplo siguiente:It looks like the following example:

-----BEGIN CERTIFICATE-----
<your entire Base64 encoded SSL certificate>
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
<The entire Base64 encoded intermediate certificate 1>
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
<The entire Base64 encoded intermediate certificate 2>
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
<The entire Base64 encoded root certificate>
-----END CERTIFICATE-----

Exportar el certificado a PFXExport certificate to PFX

Exporte el certificado SSL personalizado con la clave privada con la que se generó la solicitud de certificado.Export your merged SSL certificate with the private key that your certificate request was generated with.

Si la solicitud de certificado se genera con OpenSSL, se crea un archivo de clave privada.If you generated your certificate request using OpenSSL, then you have created a private key file. Para exportar el certificado a PFX, ejecute el comando siguiente:To export your certificate to PFX, run the following command. Reemplace los marcadores de posición <private-key-file> y <merged-certificate-file> por la ruta a la clave privada y al archivo de certificado combinado.Replace the placeholders <private-key-file> and <merged-certificate-file> with the paths to your private key and your merged certificate file.

openssl pkcs12 -export -out myserver.pfx -inkey <private-key-file> -in <merged-certificate-file>  

Cuando se le pida, defina una contraseña de exportación.When prompted, define an export password. Esta contraseña deberá usarla al cargar el certificado SSL posteriormente en App Service.You'll use this password when uploading your SSL certificate to App Service later.

Si usó IIS o Certreq.exe para generar la solicitud de certificado, instale el certificado en la máquina local y luego exporte el certificado a PFX.If you used IIS or Certreq.exe to generate your certificate request, install the certificate to your local machine, and then export the certificate to PFX.

Cargar el certificado SSLUpload your SSL certificate

Para cargar el certificado SSL, haga clic en Configuración de SSL en el panel de navegación izquierdo de la aplicación.To upload your SSL certificate, click SSL settings in the left navigation of your app.

Haga clic en Cargar certificado.Click Upload Certificate.

En Archivo de certificado PFX, seleccione el archivo PFX.In PFX Certificate File, select your PFX file. En Contraseña del certificado, escriba la contraseña que creó al exportar el archivo PFX.In Certificate password, type the password that you created when you exported the PFX file.

Haga clic en Cargar.Click Upload.

Carga del certificado

Cuando App Service termina de cargar el certificado, este aparece en la página Configuración de SSL.When App Service finishes uploading your certificate, it appears in the SSL settings page.

Certificado cargado

Enlazar el certificado SSLBind your SSL certificate

En la sección Enlaces SSL, haga clic en Agregar enlace.In the SSL bindings section, click Add binding.

En la página Agregar enlace SSL, use las listas desplegables para seleccionar el nombre de dominio que va a proteger, así como el certificado que pretende utilizar.In the Add SSL Binding page, use the dropdowns to select the domain name to secure, and the certificate to use.

Nota

Si ha cargado el certificado pero no ve los nombres de dominio en la lista desplegable Nombre de host, pruebe a actualizar la página del explorador.If you have uploaded your certificate but don't see the domain name(s) in the Hostname dropdown, try refreshing the browser page.

En Tipo de SSL, seleccione si se va a usar Indicación de nombre de servidor (SNI) o SSL basada en IP.In SSL Type, select whether to use Server Name Indication (SNI) or IP-based SSL.

  • SSL basada en SNI: pueden agregarse varios enlaces SSL basados en SNI.SNI-based SSL - Multiple SNI-based SSL bindings may be added. Esta opción permite que varios certificados SSL protejan varios dominios en una misma dirección IP.This option allows multiple SSL certificates to secure multiple domains on the same IP address. Los exploradores más modernos (como Internet Explorer, Chrome, Firefox y Opera) admiten SNI (encontrará información de compatibilidad con exploradores más completa en Indicación de nombre de servidor).Most modern browsers (including Internet Explorer, Chrome, Firefox, and Opera) support SNI (find more comprehensive browser support information at Server Name Indication).
  • SSL basada en IP: solo pueden agregarse enlaces SSL basados en IP.IP-based SSL - Only one IP-based SSL binding may be added. Esta opción solo permite que un único certificado SSL proteja una dirección IP dedicada.This option allows only one SSL certificate to secure a dedicated public IP address. Para proteger varios dominios, debe protegerlos todos con el mismo certificado SSL.To secure multiple domains, you must secure them all using the same SSL certificate. Se trata de la opción tradicional para enlaces SSL.This is the traditional option for SSL binding.

Haga clic en Agregar enlace.Click Add Binding.

Enlazar certificado SSL

Cuando App Service termina de cargar el certificado, este aparece en la sección Enlaces SSL.When App Service finishes uploading your certificate, it appears in the SSL bindings sections.

Certificado enlazado a la aplicación web

Reasignar un registro D en SSL de IPRemap A record for IP SSL

Si no usa SSL basado en IP en la aplicación, vaya directamente a Probar HTTPS para el dominio personalizado.If you don't use IP-based SSL in your app, skip to Test HTTPS for your custom domain.

De manera predeterminada, la aplicación usa una dirección IP pública compartida.By default, your app uses a shared public IP address. Cuando se enlaza un certificado con SSL basada en IP, App Service crea otra dirección IP dedicada para la aplicación.When you bind a certificate with IP-based SSL, App Service creates a new, dedicated IP address for your app.

Si ha asignado un registro D a la aplicación, actualice el registro de dominio con esta nueva dirección IP dedicada.If you have mapped an A record to your app, update your domain registry with this new, dedicated IP address.

La página Dominio personalizado de la aplicación se actualiza con la nueva dirección IP dedicada.Your app's Custom domain page is updated with the new, dedicated IP address. Copie esta dirección IP y luego reasigne el registro D a esta nueva dirección IP.Copy this IP address, then remap the A record to this new IP address.

Probar HTTPSTest HTTPS

Ahora todo lo que queda por hacer es asegurarse de que HTTPS funciona para el dominio personalizado.All that's left to do now is to make sure that HTTPS works for your custom domain. En varios exploradores, vaya a https://<your.custom.domain> para ver que da servicio a la aplicación.In various browsers, browse to https://<your.custom.domain> to see that it serves up your app.

Navegación en el portal a la aplicación de Azure

Nota

Si la aplicación genera errores de validación del certificado, probablemente esté utilizando un certificado autofirmado.If your app gives you certificate validation errors, you're probably using a self-signed certificate.

Si no es así, puede que haya olvidado certificados intermedios cuando exportó el certificado al archivo PFX.If that's not the case, you may have left out intermediate certificates when you export your certificate to the PFX file.

Renovar certificadosRenew certificates

Su dirección IP de entrada puede cambiar al eliminar un enlace, incluso si este se basa en IP.Your inbound IP address can change when you delete a binding, even if that binding is IP-based. Esto es especialmente importante al renovar un certificado que ya está en un enlace basado en IP.This is especially important when you renew a certificate that's already in an IP-based binding. Para evitar un cambio en la dirección IP de su aplicación, siga estos pasos en orden:To avoid a change in your app's IP address, follow these steps in order:

  1. Carga el nuevo certificado.Upload the new certificate.
  2. Enlaza el nuevo certificado al dominio personalizado que desee sin eliminar el antiguo.Bind the new certificate to the custom domain you want without deleting the old one. Esta acción reemplaza el enlace en lugar de quitar el antiguo.This action replaces the binding instead of removing the old one.
  3. Elimine el antiguo certificado.Delete the old certificate.

Aplicación de HTTPSEnforce HTTPS

De forma predeterminada, cualquier usuario puede acceder todavía a su aplicación mediante HTTP.By default, anyone can still access your app using HTTP. Puede redirigir todas las solicitudes HTTP al puerto HTTPS.You can redirect all HTTP requests to the HTTPS port.

En la página de la aplicación, en el panel de navegación izquierdo, seleccione Configuración de SSL.In your app page, in the left navigation, select SSL settings. A continuación, en Solo HTTPS, seleccione On.Then, in HTTPS Only, select On.

Aplicación de HTTPS

Una vez completada la operación, vaya a cualquiera de las direcciones URL HTTP que apuntan a la aplicación.When the operation is complete, navigate to any of the HTTP URLs that point to your app. Por ejemplo: For example:

  • http://<app_name>.azurewebsites.net
  • http://contoso.com
  • http://www.contoso.com

Exigencia de las versiones TLSEnforce TLS versions

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.Your app allows TLS 1.2 by default, which is the recommended TLS level by industry standards, such as PCI DSS. Para exigir versiones diferentes de TLS, siga estos pasos:To enforce different TLS versions, follow these steps:

En la página de la aplicación, en el panel de navegación izquierdo, seleccione Configuración de SSL.In your app page, in the left navigation, select SSL settings. A continuación, en TLS version (Versión de TLS), seleccione la versión mínima de TLS que desee.Then, in TLS version, select the minimum TLS version you want. Esta configuración controla solo las llamadas entrantes.This setting controls the inbound calls only.

Exigir aplicación de TLS 1.1 o 1.2

Una vez completada la operación, la aplicación rechaza todas las conexiones con versiones inferiores de TLS.When the operation is complete, your app rejects all connections with lower TLS versions.

Automatizar con scriptsAutomate with scripts

Puede automatizar enlaces SSL de la aplicación con scripts, mediante la CLI de Azure o Azure PowerShell.You can automate SSL bindings for your app with scripts, using the Azure CLI or Azure PowerShell.

Azure CLIAzure CLI

El comando siguiente carga un archivo PFX exportado y obtiene la huella digital.The following command uploads an exported PFX file and gets the thumbprint.

thumbprint=$(az webapp config ssl upload \
    --name <app_name> \
    --resource-group <resource_group_name> \
    --certificate-file <path_to_PFX_file> \
    --certificate-password <PFX_password> \
    --query thumbprint \
    --output tsv)

El comando siguiente usa la huella digital del comando anterior para agregar un enlace SSL basado en SNI.The following command adds an SNI-based SSL binding, using the thumbprint from the previous command.

az webapp config ssl bind \
    --name <app_name> \
    --resource-group <resource_group_name>
    --certificate-thumbprint $thumbprint \
    --ssl-type SNI \

El siguiente comando aplica la versión mínima de TLS: la 1.2.The following command enforces minimum TLS version of 1.2.

az webapp config set \
    --name <app_name> \
    --resource-group <resource_group_name>
    --min-tls-version 1.2

Azure PowerShellAzure PowerShell

Nota

Este artículo se ha actualizado para usar el nuevo módulo Az de Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Aún puede usar el módulo de AzureRM que continuará recibiendo correcciones de errores hasta diciembre de 2020 como mínimo.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Para más información acerca del nuevo módulo Az y la compatibilidad con AzureRM, consulte Introducing the new Azure PowerShell Az module (Presentación del nuevo módulo Az de Azure PowerShell).To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Para obtener instrucciones sobre la instalación del módulo Az, consulte Instalación de Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

El comando siguiente carga un archivo PFX exportado y agrega un enlace SSL basado en SNI.The following command uploads an exported PFX file and adds an SNI-based SSL binding.

New-AzWebAppSSLBinding `
    -WebAppName <app_name> `
    -ResourceGroupName <resource_group_name> `
    -Name <dns_name> `
    -CertificateFilePath <path_to_PFX_file> `
    -CertificatePassword <PFX_password> `
    -SslState SniEnabled

Certificados públicos (opcionales)Public certificates (optional)

Si la aplicación necesita acceder a recursos remotos como un cliente y el recurso remoto requiere autenticación de certificados, puede cargar los certificados públicos en la aplicación.If your app needs to access remote resources as a client, and the remote resource requires certificate authentication, you can upload public certificates to your app. Los certificados públicos no son necesarios para los enlaces SSL de la aplicación.Public certificates are not required for SSL bindings of your app.

Para obtener más información sobre cómo cargar y usar un certificado público en su aplicación, consulte Uso de un certificado SSL en el código de aplicación de Azure App Service.For more details on loading and using a public certificate in your app, see Use an SSL certificate in your application code in Azure App Service. También puede utilizar certificados públicos con las aplicaciones de App Service Environment.You can use public certificates with apps in App Service Environments too. Si tiene que almacenar el certificado en el almacén de certificados de la máquina local, debe usar una aplicación en App Service Environment.If you need to store the certificate in the LocalMachine certificate store, you need to use an app on App Service Environment. Para más información, consulte Configuración de certificados públicos en una aplicación de App Service.For more information, see How to configure public certificates to your App Service app.

Carga de un certificado público

Pasos siguientesNext steps

En este tutorial aprendió lo siguiente:In this tutorial, you learned how to:

  • Actualizar el plan de tarifa de la aplicaciónUpgrade your app's pricing tier
  • Enlazar el certificado personalizado con App ServiceBind your custom certificate to App Service
  • Renovar certificadosRenew certificates
  • Aplicación de HTTPSEnforce HTTPS
  • Aplicación de TLS 1.1 y 1.2Enforce TLS 1.1/1.2
  • Automatización de la administración de TLS con scriptsAutomate TLS management with scripts

Para aprender a usar Azure Content Delivery Network, avance al siguiente tutorial.Advance to the next tutorial to learn how to use Azure Content Delivery Network.

Para más información, consulte Uso de un certificado SSL en el código de aplicación de Azure App Service.For more information, see Use an SSL certificate in your application code in Azure App Service.