Tutorial: Carga y enlace de certificados SSL en Azure App ServiceTutorial: Upload and bind SSL certificates 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 proteger dominio personalizado en App Service con un certificado adquirido a una entidad de certificación de confianza.This tutorial shows you how to secure a custom domain in App Service with a certificate that you purchased from a trusted certificate authority. También muestra cómo cargar los certificados privados y públicos que su aplicación necesita.It also shows you how to upload any private and public certificates your app needs. 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
  • Proteger un dominio personalizado con un certificadoSecure a custom domain with a certificate
  • Carga de un certificado privadoUpload a private certificate
  • Carga de un certificado públicoUpload a public certificate
  • 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

Requisitos previosPrerequisites

Para completar este tutorial:To complete this tutorial:

Preparación de un certificado privadoPrepare a private certificate

Para proteger un dominio, el certificado debe cumplir los siguientes requisitos:To secure a domain, the certificate must meet all the following requirements:

  • Estar configurado para la autenticación de servidorConfigured for Server Authentication
  • 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

Sugerencia

Si necesita un certificado SSL personalizado, puede obtenerlo directamente en Azure Portal e importarlo a la aplicación.If you need to get a custom SSL certificate, you can get one in the Azure portal directly and import 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.

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.

Una vez que obtenga un certificado de su proveedor de certificados, siga los pasos que se describen en esta sección para prepararlo para App Service.Once you obtain a certificate from your certificate provider, follow the steps in this section to make it ready for App Service.

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.

Ya está listo para cargar el certificado en App Service.You're now ready upload the certificate to App Service.

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

Protección de un dominio personalizadoSecure a custom domain

Sugerencia

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.

Para proteger un dominio personalizado con un certificado de terceros, se carga el certificado privado preparado y, después, se enlaza con el dominio personalizado, pero App Service simplifica este proceso.To secure a custom domain with a third-party certificate, you upload the prepared private certificate and then bind it to the custom domain, but App Service simplifies the process for you. Siga estos pasos:Do the following steps:

Haga clic en Dominios personalizados en el panel izquierdo de la aplicación y, después, haga clic en Agregar enlace en el dominio que desea proteger.Click Custom domains in the left navigation of your app, then click Add binding for the domain you want to secure. Si no ve Agregar enlace en algún dominio, se debe a que ya es seguro, por lo que debería tener un estado de SSL Seguro.If you don't see Add binding for a domain, then it's already secure and should have a Secure SSL state.

Agregar enlace a un dominio

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 en el dominio

Espere hasta que Azure cargue el certificado e inicie el cuadro de diálogo de enlaces de SSL.Wait for Azure to upload your certificate and launch the SSL bindings dialog.

En dicho cuadro de diálogo, seleccione el certificado que cargó y el tipo SSL y haga clic en Agregar enlace.In the SSL bindings dialog, select the certificate you uploaded and the SSL type, and then click Add Binding.

Nota

Se admiten los siguientes tipos de SSL:The following SSL types are supported:

  • SSL basada en SNI : se pueden agregar 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.

Enlace de SSL a un dominio

El estado de SSL del dominio se debe cambiar ahora a Seguro.The domain's SSL state should now be changed to Secure.

Dominio protegido

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.A Secure state in the Custom domains means that it is secured with a certificate, but App Service doesn't check if the certificate is self-signed or expired, for example, which can also cause browsers to show an error or warning.

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

Uso de certificados en el códigoUse certificates in your code

Si la aplicación necesita conectarse a recursos remotos y el recurso remoto requiere la autenticación de certificados, puede cargar certificados públicos o privados en la aplicación.If your app needs to connect to remote resources, and the remote resource requires certificate authentication, you can upload public or private certificates to your app. No es necesario enlazar estos certificados a ningún dominio personalizado en la aplicación.You don't need to bind these certificates to any custom domain in your app. 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.

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.