Didacticiel : Charger et lier un certificat SSL dans Azure App ServiceTutorial: Upload and bind SSL certificates to Azure App Service

Azure App Service offre un service d’hébergement web hautement évolutif appliquant des mises à jour correctives automatiques.Azure App Service provides a highly scalable, self-patching web hosting service. Ce tutoriel montre comment sécuriser un domaine personnalisé dans App Service à l’aide d’un certificat acheté auprès d’une autorité de certification approuvée.This tutorial shows you how to secure a custom domain in App Service with a certificate that you purchased from a trusted certificate authority. Il explique également comment charger les certificats privés et publics dont votre application a besoin.It also shows you how to upload any private and public certificates your app needs. Quand vous aurez terminé, vous pourrez accéder à votre application au niveau du point de terminaison HTTPS de votre domaine DNS personnalisé.When you're finished, you'll be able to access your app at the HTTPS endpoint of your custom DNS domain.

Application Web avec certificat SSL personnalisé

Ce didacticiel vous montre comment effectuer les opérations suivantes :In this tutorial, you learn how to:

  • Mettre à jour le niveau de tarification de votre applicationUpgrade your app's pricing tier
  • Sécuriser un domaine personnalisé à l’aide d’un certificatSecure a custom domain with a certificate
  • Téléchargement d’un certificat privéUpload a private certificate
  • Téléchargement d’un certificat publicUpload a public certificate
  • Renouveler les certificatsRenew certificates
  • Appliquer le protocole HTTPSEnforce HTTPS
  • Appliquer le protocole TLS 1.1/1.2Enforce TLS 1.1/1.2
  • Automatiser la gestion TLS avec des scriptsAutomate TLS management with scripts

PrérequisPrerequisites

Pour suivre ce tutoriel :To complete this tutorial:

Préparer un certificat privéPrepare a private certificate

Pour sécuriser un domaine, le certificat doit remplir toutes les exigences suivantes :To secure a domain, the certificate must meet all the following requirements:

  • Être configuré pour l’authentification serveurConfigured for Server Authentication
  • Être signé par une autorité de certification approuvéeSigned by a trusted certificate authority
  • Être exporté sous la forme d’un fichier PFX protégé par mot de passeExported as a password-protected PFX file
  • Contenir une clé privée d’au moins 2048 bits de longContains private key at least 2048 bits long
  • Contenir tous les certificats intermédiaires dans la chaîne de certificatsContains all intermediate certificates in the certificate chain

Conseil

Si vous avez besoin d’un certificat SSL personnalisé, vous pouvez en obtenir un directement dans le portail Azure et l’importer dans votre application.If you need to get a custom SSL certificate, you can get one in the Azure portal directly and import it to your app. Suivez le didacticiel Certificats App Service.Follow the App Service Certificates tutorial.

Notes

Les certificats de chiffrement à courbe elliptique (ECC) sont compatibles avec App Service, mais ce sujet sort du cadre de cet article.Elliptic Curve Cryptography (ECC) certificates can work with App Service but are not covered by this article. Consultez votre autorité de certification sur les étapes à suivre pour créer des certificats ECC.Work with your certificate authority on the exact steps to create ECC certificates.

Une fois que vous avez obtenu un certificat de votre fournisseur de certificats, effectuez les étapes décrites dans cette section afin de préparer le certificat pour App Service.Once you obtain a certificate from your certificate provider, follow the steps in this section to make it ready for App Service.

Fusionner les certificats intermédiairesMerge intermediate certificates

Si votre autorité de certification vous donne plusieurs certificats dans la chaîne, vous devez les fusionner dans l’ordre.If your certificate authority gives you multiple certificates in the certificate chain, you need to merge the certificates in order.

Pour ce faire, ouvrez chaque certificat reçu dans un éditeur de texte.To do this, open each certificate you received in a text editor.

Créez un fichier pour le certificat fusionné, appelé mergedcertificate.crt.Create a file for the merged certificate, called mergedcertificate.crt. Dans un éditeur de texte, copiez le contenu de chaque certificat dans ce fichier.In a text editor, copy the content of each certificate into this file. L’ordre de vos certificats devrait suivre l’ordre dans la chaîne d’approbation, commençant par votre certificat et finissant par le certificat racine.The order of your certificates should follow the order in the certificate chain, beginning with your certificate and ending with the root certificate. Cela ressemble à l’exemple suivant :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-----

Exportation du certificat vers PFXExport certificate to PFX

Exportez votre certificat SSL fusionné avec la clé privée ayant servi à générer votre demande de certificat.Export your merged SSL certificate with the private key that your certificate request was generated with.

Si vous avez généré votre demande de certificat à l’aide d’OpenSSL, vous avez créé un fichier de clé privée.If you generated your certificate request using OpenSSL, then you have created a private key file. Pour exporter votre certificat au format PFX, exécutez la commande suivante :To export your certificate to PFX, run the following command. Remplacez les espaces réservés <fichier de clé privée> et <fichier de certificat fusionné> par les chemins d’accès menant à votre clé privée et à votre fichier de certificat fusionné.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>  

Lorsque vous y êtes invité, définissez un mot de passe d’exportation.When prompted, define an export password. Vous allez utiliser ce mot de passe lors du chargement de votre certificat SSL dans App Service.You'll use this password when uploading your SSL certificate to App Service later.

Si vous avez utilisé IIS ou Certreq.exe pour générer votre demande de certificat, installez le certificat sur votre ordinateur local, puis exportez le certificat au format 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.

Vous êtes maintenant prêt à charger le certificat dans App Service.You're now ready upload the certificate to App Service.

Préparation de votre application webPrepare your web app

Pour lier un certificat SSL personnalisé (un certificat tiers ou un certificat App Service) à votre application web, votre plan App Service doit se trouver dans le niveau De base, Standard, Premium ou Isolé.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. Au cours de cette étape, vous allez vous assurer que votre application web se trouve dans le niveau de tarification pris en charge.In this step, you make sure that your web app is in the supported pricing tier.

Connexion à AzureLog in to Azure

Ouvrez le portail Azure.Open the Azure portal.

Dans le menu de gauche, cliquez sur App Services puis sur le nom de votre application web.From the left menu, click App Services, and then click the name of your web app.

Sélectionner de l’application web

Vous accédez à la page de gestion de votre application web.You have landed in the management page of your web app.

Vérification du niveau tarifaireCheck the pricing tier

Dans la navigation de gauche de la page de votre application web, accédez à la section Paramètres et sélectionnez Monter en puissance (plan App Service) .In the left-hand navigation of your web app page, scroll to the Settings section and select Scale up (App Service plan).

Menu Monter en puissance

Vérifiez que votre application web ne se trouve pas dans le niveau F1 ou D1.Check to make sure that your web app is not in the F1 or D1 tier. Le niveau actuel de votre application web est encadré d’un rectangle bleu foncé.Your web app's current tier is highlighted by a dark blue box.

Vérification du niveau de tarification

Le certificat SSL personnalisé n’est pas pris en charge pour les niveaux F1 et D1.Custom SSL is not supported in the F1 or D1 tier. Si vous avez besoin de monter en puissance, consultez la section ci-après.If you need to scale up, follow the steps in the next section. Sinon, fermez la page Monter en puissance et ignorez la section Évolution de votre plan App Service.Otherwise, close the Scale up page and skip the Scale up your App Service plan section.

Évolution de votre plan App ServiceScale up your App Service plan

Sélectionnez un niveau payant (B1, B2, B3, ou n’importe quel niveau dans la catégorie Production).Select any of the non-free tiers (B1, B2, B3, or any tier in the Production category). Pour obtenir des options supplémentaires, cliquez sur Afficher d’autres options.For additional options, click See additional options.

Cliquez sur Appliquer.Click Apply.

Sélection du niveau tarifaire

Lorsque la notification suivante s’affiche, cela signifie que la montée en charge est terminée.When you see the following notification, the scale operation is complete.

Notification de montée en puissance

Sécuriser un domaine personnaliséSecure a custom domain

Conseil

Si vous avez besoin d’un certificat SSL personnalisé, vous pouvez en obtenir un directement dans le portail Azure et le lier à votre application.If you need to get a custom SSL certificate, you can get one in the Azure portal directly and bind it to your app. Suivez le didacticiel Certificats App Service.Follow the App Service Certificates tutorial.

Pour sécuriser un domaine personnalisé avec un certificat tiers, vous devez charger le certificat privé préparé, puis le lier au domaine personnalisé. Ce processus est facilité par App Service.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. Effectuez également les étapes suivantes :Do the following steps:

Cliquez sur Domaines personnalisés dans le volet de navigation gauche dans votre application, puis cliquez sur Ajouter une liaison pour le domaine à sécuriser.Click Custom domains in the left navigation of your app, then click Add binding for the domain you want to secure. Si vous ne voyez pas l’option Ajouter une liaison pour un domaine, cela signifie que ce domaine est déjà sécurisé et doit avoir l’état SSL Sécurisé.If you don't see Add binding for a domain, then it's already secure and should have a Secure SSL state.

Ajouter une liaison au domaine

Cliquez sur Charger le certificat.Click Upload Certificate.

Dans Fichier de certificat PFX, sélectionnez votre fichier PFX.In PFX Certificate File, select your PFX file. Dans Mot de passe du certificat, tapez le mot de passe que vous avez créé lors de l’exportation du fichier PFX.In Certificate password, type the password that you created when you exported the PFX file.

Cliquez sur Télécharger.Click Upload.

Charger le certificat pour le domaine

Attendez qu’Azure ait fini de charger votre certificat et d’ouvrir la boîte de dialogue Liaisons SSL.Wait for Azure to upload your certificate and launch the SSL bindings dialog.

Dans la boîte de dialogue Liaisons SSL, sélectionnez le certificat que vous avez chargé ainsi que le type SSL, puis cliquez sur Ajouter une liaison.In the SSL bindings dialog, select the certificate you uploaded and the SSL type, and then click Add Binding.

Notes

Les types SSL suivants sont pris en charge :The following SSL types are supported:

  • SSL basé sur SNI  : plusieurs liaisons SSL basées sur SNI peuvent être ajoutées.SNI-based SSL - Multiple SNI-based SSL bindings may be added. Cette option permet de sécuriser plusieurs domaines sur la même adresse IP avec plusieurs certificats SSL.This option allows multiple SSL certificates to secure multiple domains on the same IP address. La plupart des navigateurs actuels (y compris Internet Explorer, Chrome, Firefox et Opera) prennent en charge SNI (plus d’informations sur la prise en charge des navigateurs dans Indication du nom du serveur).Most modern browsers (including Internet Explorer, Chrome, Firefox, and Opera) support SNI (find more comprehensive browser support information at Server Name Indication).
  • SSL basé sur IP : une seule liaison SSL basée sur IP peut être ajoutée.IP-based SSL - Only one IP-based SSL binding may be added. Cette option permet de sécuriser une adresse IP publique dédiée avec un seul certificat SSL.This option allows only one SSL certificate to secure a dedicated public IP address. Pour sécuriser plusieurs domaines, vous devez tous les sécuriser en utilisant le même certificat SSL.To secure multiple domains, you must secure them all using the same SSL certificate. Cette option est sélectionnée par défaut pour la liaison SSL.This is the traditional option for SSL binding.

Liaison SSL au domaine

L’état SSL du domaine doit maintenant être Sécurisé.The domain's SSL state should now be changed to Secure.

Domaine sécurisé

Notes

Quand un domaine présente l’état Sécurisé dans Domaines personnalisés, cela indique qu’il est sécurisé par un certificat. Toutefois, App Service ne vérifie pas si le certificat est auto-signé ou arrivé à expiration, par exemple, ce qui peut également provoquer l’affichage d’une erreur ou d’un avertissement dans les navigateurs.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.

Nouveau mappage d’un enregistrement pour SSL IPRemap A record for IP SSL

Si vous n’utilisez pas SSL basé sur IP dans votre application, passez à Tester HTTPS pour votre domaine personnalisé.If you don't use IP-based SSL in your app, skip to Test HTTPS for your custom domain.

Par défaut, votre application utilise une adresse IP publique partagée.By default, your app uses a shared public IP address. Dès que vous liez un certificat avec SSL basé sur IP, App Service crée une adresse IP dédiée pour votre application.When you bind a certificate with IP-based SSL, App Service creates a new, dedicated IP address for your app.

Si vous avez mappé un enregistrement A à votre application, mettez à jour votre registre de domaine avec cette nouvelle adresse IP dédiée.If you have mapped an A record to your app, update your domain registry with this new, dedicated IP address.

La page Domaine personnalisé de votre application est mise à jour avec la nouvelle adresse IP dédiée.Your app's Custom domain page is updated with the new, dedicated IP address. Copiez cette adresse IP, puis mappez à nouveau l’enregistrement A à cette nouvelle adresse IP.Copy this IP address, then remap the A record to this new IP address.

Test du protocole HTTPSTest HTTPS

Il ne reste plus maintenant qu’à vous assurer que HTTPS fonctionne pour votre domaine personnalisé.All that's left to do now is to make sure that HTTPS works for your custom domain. Dans différents navigateurs, accédez à https://<your.custom.domain> pour vérifier qu’il fournit votre application.In various browsers, browse to https://<your.custom.domain> to see that it serves up your app.

Navigation au sein du portail pour accéder à l’application Azure

Notes

Si votre application permet de voir les erreurs de validation de certificat, vous utilisez probablement un certificat auto-signé.If your app gives you certificate validation errors, you're probably using a self-signed certificate.

Si ce n’est pas le cas, vous pouvez avoir oublié des certificats intermédiaires lorsque vous avez exporté votre certificat vers le fichier PFX.If that's not the case, you may have left out intermediate certificates when you export your certificate to the PFX file.

Renouveler les certificatsRenew certificates

Votre adresse IP entrante peut être modifiée lorsque vous supprimez une liaison, même si cette liaison repose sur une adresse IP.Your inbound IP address can change when you delete a binding, even if that binding is IP-based. Cela est particulièrement important lorsque vous renouvelez un certificat qui se trouve déjà dans une liaison reposant sur une adresse IP.This is especially important when you renew a certificate that's already in an IP-based binding. Pour éviter une modification de l’adresse IP de votre application, suivez ces étapes dans l’ordre :To avoid a change in your app's IP address, follow these steps in order:

  1. Chargez le nouveau certificat.Upload the new certificate.
  2. Liez le nouveau certificat au domaine personnalisé souhaité, sans supprimer l’ancien.Bind the new certificate to the custom domain you want without deleting the old one. Cette action remplace la liaison plutôt que de supprimer l’ancienne.This action replaces the binding instead of removing the old one.
  3. Supprimez l’ancien certificat.Delete the old certificate.

Appliquer le protocole HTTPSEnforce HTTPS

Par défaut, n’importe qui peut encore accéder à votre application avec HTTP.By default, anyone can still access your app using HTTP. Vous pouvez rediriger toutes les demandes HTTP sur le port HTTPS.You can redirect all HTTP requests to the HTTPS port.

Dans le volet de navigation gauche de la page de votre application, sélectionnez Paramètres SSL.In your app page, in the left navigation, select SSL settings. Ensuite, dans HTTPS uniquement, sélectionnez Activer.Then, in HTTPS Only, select On.

Appliquer le protocole HTTPS

Lorsque l’opération est terminée, accédez à une des URL HTTP pointant vers votre application.When the operation is complete, navigate to any of the HTTP URLs that point to your app. Par exemple :For example:

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

Appliquer des versions TLSEnforce TLS versions

Votre application autorise la version TLS 1.2 par défaut, qui constitue le niveau TLS recommandé par les normes du secteur, telles que PCI DSS.Your app allows TLS 1.2 by default, which is the recommended TLS level by industry standards, such as PCI DSS. Pour appliquer d’autres versions TLS, procédez comme suit :To enforce different TLS versions, follow these steps:

Dans le volet de navigation gauche de la page de votre application, sélectionnez Paramètres SSL.In your app page, in the left navigation, select SSL settings. Ensuite, dans Version TLS, sélectionnez la version minimale de TLS souhaitée.Then, in TLS version, select the minimum TLS version you want. Ce paramètre contrôle uniquement les appels entrants.This setting controls the inbound calls only.

Appliquer le protocole TLS 1.1 ou 1.2

Une fois l’opération terminée, votre application rejette toutes les connexions effectuées avec des versions antérieures de TLS.When the operation is complete, your app rejects all connections with lower TLS versions.

Automatiser des tâches à l’aide de scriptsAutomate with scripts

Vous pouvez automatiser les liaisons SSL de votre application à l’aide de scripts, en utilisant Azure CLI ou Azure PowerShell.You can automate SSL bindings for your app with scripts, using the Azure CLI or Azure PowerShell.

Azure CLIAzure CLI

La commande suivante charge un fichier PFX exporté et obtient l’empreinte.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)

La commande suivante ajoute une liaison SSL basée sur SNI à l’aide de l’empreinte de la commande précédente.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 \

La commande suivante met en œuvre la version minimale de TLS 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

Notes

Cet article a été mis à jour pour tenir compte de l’utilisation du nouveau module Az d’Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Vous pouvez toujours utiliser le module AzureRM, qui continue à recevoir des correctifs de bogues jusqu’à au moins décembre 2020.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Pour en savoir plus sur le nouveau module Az et la compatibilité avec AzureRM, consultez Présentation du nouveau module Az d’Azure PowerShell.To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Pour des instructions d’installation du module Az, consultez Installer Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

La commande suivante charge un fichier PFX exporté et ajoute une liaison SSL basée sur 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

Utiliser des certificats dans votre codeUse certificates in your code

Si votre application doit se connecter à des ressources distantes, et qu’une ressource distante exige l’authentification par certificat, vous pouvez charger des certificats publics ou privés dans votre application.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. Vous n’avez pas besoin de lier ces certificats à un domaine personnalisé dans votre application.You don't need to bind these certificates to any custom domain in your app. Pour plus d’informations, consultez Utiliser un certificat SSL dans votre code d’application dans Azure App Service.For more information, see Use an SSL certificate in your application code in Azure App Service.

Étapes suivantesNext steps

Dans ce tutoriel, vous avez appris à :In this tutorial, you learned how to:

  • Mettre à jour le niveau de tarification de votre applicationUpgrade your app's pricing tier
  • Lier votre certificat personnalisé à App ServiceBind your custom certificate to App Service
  • Renouveler les certificatsRenew certificates
  • Appliquer le protocole HTTPSEnforce HTTPS
  • Appliquer le protocole TLS 1.1/1.2Enforce TLS 1.1/1.2
  • Automatiser la gestion TLS avec des scriptsAutomate TLS management with scripts

Passez au didacticiel suivant pour découvrir comment utiliser un réseau de distribution de contenu Azure.Advance to the next tutorial to learn how to use Azure Content Delivery Network.

Pour plus d’informations, consultez Utiliser un certificat SSL dans votre code d’application dans Azure App Service.For more information, see Use an SSL certificate in your application code in Azure App Service.