Assurer la sécurité d’un nom DNS personnalisé avec une liaison TLS/SSL dans App Service

Cet article vous explique comment assurer la sécurité du domaine personnalisé dans votre application App Service ou application de fonction en créant une liaison de certificat. Lorsque vous avez terminé, vous pouvez accéder à votre application App Service au niveau du point de terminaison https:// pour votre nom DNS personnalisé (par exemple, https://www.contoso.com).

Application web avec un certificat TLS/SSL personnalisé.

Prérequis

Ajouter la liaison

Dans le portail Azure:

  1. Dans le menu de gauche, sélectionnez App Services><app-name>.

  2. Dans le volet de navigation gauche de votre application, sélectionnez Domaines personnalisés.

  3. En regard du domaine personnalisé, sélectionnez Ajouter une liaison.

    Une capture d’écran montrant comment lancer la boîte de dialogue Ajouter une liaison TLS/SSL.

  4. Si votre application dispose déjà d’un certificat pour le domaine personnalisé sélectionné, vous pouvez le sélectionner dans Certificat. Si ce n’est pas le cas, vous devez ajouter un certificat à l’aide de l’une des sélections dans Source.

    • Créer un certificat managé App Service - laissez-App Service créer un certificat managé pour le domaine sélectionné. Cette option est la plus simple. Pour plus d’informations, consultez Créer un certificat managé gratuit.
    • Importer App Service Certificate : dans App Service Certificat, sélectionnez un certificat App Service que vous avez acheté pour votre domaine sélectionné.
    • Charger le certificat (.pfx) - suivez le flux de travail dans Charger un certificat privé pour charger un certificat PFX à partir de votre ordinateur local et spécifier le mot de passe du certificat.
    • Importer à partir de Key Vault - sélectionnez Sélectionner le certificat de coffre de clés, puis sélectionnez le certificat dans la boîte de dialogue.
  5. Dans Type TLS/SSL, sélectionnez SNI SSL ou SSL basé sur IP.

    • SNI SSL : plusieurs liaisons SNI SSL peuvent être ajoutées. Cette option permet de sécuriser plusieurs domaines sur la même adresse IP avec plusieurs certificats TLS/SSL. La plupart des navigateurs modernes (dont Microsoft Edge, Chrome, Firefox et Opera) prennent en charge SNI. (Pour découvrir plus d’informations, consultez Indication du nom du serveur.)
    • SSL basé sur IP : une seule liaison IP SSL peut être ajoutée. Cette option permet de sécuriser une adresse IP publique dédiée avec un seul certificat TLS/SSL. Après avoir configuré la liaison, effectuez les étapes décrites dans Remapper des enregistrements pour SSL basé sur l’IP.
      SSL basé sur l’IP est pris en charge seulement dans le niveau Standard ou supérieur.
  6. Lors de l’ajout d’un nouveau certificat, validez le nouveau certificat en sélectionnant Valider.

  7. Sélectionnez Ajouter.

    Une fois l’opération terminée, l’état TLS/SSL du domaine personnalisé est remplacé par Sécurisé.

    Une capture d’écran montrant le domaine personnalisé sécurisé par une liaison de certificat.

Remarque

L’état Sécurisé dans Domaines personnalisés indique qu’un certificat fournit une sécurité. Toutefois, App Service ne vérifie pas si le certificat est signé automatiquement ou arrivé à expiration, par exemple, ce qui peut également provoquer l’affichage d’une erreur ou d’un avertissement dans les navigateurs.

Remapper des enregistrements pour SSL basé sur l’IP

Cette étape est nécessaire uniquement pour le protocole SSL basé sur l’IP. Pour une liaison SNI SSL, passez à Tester HTTPS.

Vous devez potentiellement effectuer deux modifications :

  • Par défaut, votre application utilise une adresse IP publique partagée. Dès que vous liez un certificat avec IP SSL, App Service crée une adresse IP dédiée pour votre application. Si vous avez mappé un enregistrement A à votre application, mettez à jour votre registre de domaine avec cette nouvelle adresse IP dédiée.

    La page Domaine personnalisé de votre application est mise à jour avec la nouvelle adresse IP dédiée. Copiez cette adresse IP, puis remappez l’enregistrement A à cette nouvelle adresse IP.

  • Si vous avez une liaison SNI SSL à <app-name>.azurewebsites.net, remappez les mappages CNAME pour les pointer vers sni.<app-name>.azurewebsites.net à la place. (Ajoutez le préfixe sni.)

Test du protocole HTTPS

Dans différents navigateurs, accédez à https://<your.custom.domain> pour vérifier que votre application s’affiche.

Capture d’écran montrant un exemple de navigation vers votre domaine personnalisé. L’URL contoso.com est mise en évidence.

Votre code d’application peut inspecter le protocole via l’en-tête x-appservice-proto. L’en-tête a la valeur de http ou https.

Notes

Si votre application permet de voir les erreurs de validation de certificat, vous utilisez probablement un certificat auto-signé.

Si ce n’est pas le cas, il est possible que vous ayez oublié des certificats intermédiaires lorsque vous avez exporté votre certificat vers le fichier PFX.

Forum aux questions

Comment puis-je m’assurer que l’adresse IP de l’application ne change pas lorsque j’apporte des modifications à la liaison de certificat ?

Votre adresse IP entrante peut être modifiée lorsque vous supprimez une liaison, même si cette liaison est une IP SSL. Cela est particulièrement important lorsque vous renouvelez un certificat qui se trouve déjà dans une liaison d’IP SSL. Pour éviter une modification de l’adresse IP de votre application, suivez ces étapes dans l’ordre :

  1. Chargez le nouveau certificat.
  2. Liez le nouveau certificat au domaine personnalisé souhaité, sans supprimer l’ancien. Cette action remplace la liaison plutôt que de supprimer l’ancienne.
  3. Supprimez l’ancien certificat.

Puis-je désactiver la redirection forcée de HTTP vers HTTPS ?

Par défaut, App Service force une redirection des requêtes HTTP vers HTTPS. Pour désactiver ce comportement, consultez Configurer les paramètres généraux.

Comment modifier les versions TLS minimales de l’application ?

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. Pour appliquer différentes versions de TLS, consultez Configurer les paramètres généraux.

Comment gérer la terminaison TLS dans App Service ?

Dans App Service, un arrêt TLS se produit au niveau des équilibreurs de charge réseau. Toutes les requêtes HTTPS accèdent donc à votre application en tant que requêtes HTTP non chiffrées. Si votre logique d’application doit vérifier si les requêtes utilisateur sont chiffrées, inspectez l’en-tête X-Forwarded-Proto.

Des guides de configuration spécifiques au langage, tels que le guide de configuration Linux Node.js, vous montrent comment détecter une session HTTPS dans le code de votre application.

Automatiser des tâches à l’aide de scripts

Azure CLI

Lier un certificat TLS/SSL personnalisé à une application 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