Sécuriser un nom DNS personnalisé avec une liaison TLS/SSL dans Azure App Service

Cet article explique comment sécuriser le 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).

Web app with custom TLS/SSL certificate

Prérequis

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

    A screenshot showing how to launch the Add TLS/SSL Binding dialog.

  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 un certificat App Service - dans App Service Certificat, choisissez un certificat App Service que vous avez acheté pour le 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, choisissez entre SNI SSL et SSL basé sur l’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 actuels (y compris Internet Explorer, Chrome, Firefox et Opera) prennent en charge SNI (pour 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 2. Remapper des enregistrements pour SSL basé sur IP.
        IP SSL est pris en charge seulement dans le niveau de base 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é.

    A screenshot showing the custom domain secured by a certificate binding.

Remarque

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.

2. Remapper les enregistrements pour le SSL basé sur l’IP

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

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, remapper les mappages CNAME pour les faire pointer à la place vers sni.<app-name>.azurewebsites.net (ajoutez le préfixe sni).

3. Test HTTPS

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

Screenshot showing an example of browsing to your custom domain with the contoso.com URL highlighted.

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, vous pouvez avoir 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 ou non, 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

Plus de ressources