Configurer l’authentification mutuelle sur Application Gateway via PowerShell
Cet article explique comment utiliser PowerShell pour configurer l’authentification mutuelle sur votre instance d’Application Gateway. L’authentification mutuelle signifie qu’Application Gateway authentifie le client qui envoie la requête à l’aide du certificat client que vous chargez sur Application Gateway.
Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
Notes
Nous vous recommandons d’utiliser le module Azure Az PowerShell pour interagir avec Azure. Pour commencer, consultez Installer Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell depuis AzureRM vers Az.
Cet article nécessite l’utilisation du module Azure PowerShell version 1.0.0 ou ultérieure. Exécutez Get-Module -ListAvailable Az
pour trouver la version. Si vous devez effectuer une mise à niveau, consultez Installer le module Azure PowerShell. Si vous exécutez PowerShell en local, vous devez également exécuter Login-AzAccount
pour créer une connexion avec Azure.
Avant de commencer
Pour configurer l’authentification mutuelle sur une instance d’Application Gateway, un certificat client doit être chargé sur la passerelle. Le certificat client sera utilisé pour valider le certificat que le client présentera à Application Gateway. Dans le cadre d’un test, vous pouvez utiliser un certificat auto-signé. Toutefois, ces derniers ne sont pas recommandés pour les charges de travail de production, car elles sont plus difficiles à gérer et ne sont pas entièrement sécurisées.
Pour en savoir plus, en particulier sur le type de certificat client que vous pouvez charger, consultez Présentation de l’authentification mutuelle sur Application Gateway.
Créer un groupe de ressources
Commencez par créer un groupe de ressources Azure dans votre abonnement.
$resourceGroup = New-AzResourceGroup -Name $rgname -Location $location -Tags @{ testtag = "APPGw tag"}
Créez un réseau virtuel
Déployez un réseau virtuel pour y déployer votre instance d’Application Gateway.
$gwSubnet = New-AzVirtualNetworkSubnetConfig -Name $gwSubnetName -AddressPrefix 10.0.0.0/24
$vnet = New-AzVirtualNetwork -Name $vnetName -ResourceGroupName $rgname -Location $location -AddressPrefix 10.0.0.0/16 -Subnet $gwSubnet
$vnet = Get-AzVirtualNetwork -Name $vnetName -ResourceGroupName $rgname
$gwSubnet = Get-AzVirtualNetworkSubnetConfig -Name $gwSubnetName -VirtualNetwork $vnet
Créez une adresse IP publique.
Créez une adresse IP publique à utiliser avec votre instance d’Application Gateway.
$publicip = New-AzPublicIpAddress -ResourceGroupName $rgname -name $publicIpName -location $location -AllocationMethod Static -sku Standard
Créer la configuration IP d’Application Gateway
Créez les configurations IP et le port front-end.
$gipconfig = New-AzApplicationGatewayIPConfiguration -Name $gipconfigname -Subnet $gwSubnet
$fipconfig = New-AzApplicationGatewayFrontendIPConfig -Name $fipconfigName -PublicIPAddress $publicip
$port = New-AzApplicationGatewayFrontendPort -Name $frontendPortName -Port 443
Configurer le protocole SSL front-end
Configurez les certificats SSL pour votre instance d’Application Gateway.
$password = ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force
$sslCertPath = $basedir + "/ScenarioTests/Data/ApplicationGatewaySslCert1.pfx"
$sslCert = New-AzApplicationGatewaySslCertificate -Name $sslCertName -CertificateFile $sslCertPath -Password $password
Configurer une authentification de client
Configurez l’authentification de client sur votre instance d’Application Gateway. Pour plus d’informations sur l’extraction de chaînes de certificats d’autorité de certification clients approuvés, consultez l’article Exporter une chaîne de certificats d’autorité de certification clients approuvés à utiliser avec l’authentification client.
Important
Veillez à charger l'intégralité de la chaîne de certificats d'autorité de certification clients dans un même fichier, et une seule chaîne par fichier.
Remarque
Nous vous recommandons d’utiliser TLS 1.2 avec l’authentification mutuelle, car TLS 1.2 sera obligatoire à l’avenir.
$clientCertFilePath = $basedir + "/ScenarioTests/Data/TrustedClientCertificate.cer"
$trustedClient01 = New-AzApplicationGatewayTrustedClientCertificate -Name $trustedClientCert01Name -CertificateFile $clientCertFilePath
$sslPolicy = New-AzApplicationGatewaySslPolicy -PolicyType Predefined -PolicyName "AppGwSslPolicy20170401S"
$clientAuthConfig = New-AzApplicationGatewayClientAuthConfiguration -VerifyClientCertIssuerDN
$sslProfile01 = New-AzApplicationGatewaySslProfile -Name $sslProfile01Name -SslPolicy $sslPolicy -ClientAuthConfiguration $clientAuthConfig -TrustedClientCertificates $trustedClient01
$listener = New-AzApplicationGatewayHttpListener -Name $listenerName -Protocol Https -SslCertificate $sslCert -FrontendIPConfiguration $fipconfig -FrontendPort $port -SslProfile $sslProfile01
Configurer le pool back-end et les paramètres
Configurez le pool back-end et les paramètres de votre instance d’Application Gateway. Éventuellement, configurez le certificat racine approuvé du serveur back-end pour le chiffrement SSL de bout en bout.
$certFilePath = $basedir + "/ScenarioTests/Data/ApplicationGatewayAuthCert.cer"
$trustedRoot = New-AzApplicationGatewayTrustedRootCertificate -Name $trustedRootCertName -CertificateFile $certFilePath
$pool = New-AzApplicationGatewayBackendAddressPool -Name $poolName -BackendIPAddresses www.microsoft.com, www.bing.com
$poolSetting = New-AzApplicationGatewayBackendHttpSettings -Name $poolSettingName -Port 443 -Protocol Https -CookieBasedAffinity Enabled -PickHostNameFromBackendAddress -TrustedRootCertificate $trustedRoot
Configurer la règle
Configurez une règle sur votre instance d’Application Gateway.
$rule = New-AzApplicationGatewayRequestRoutingRule -Name $ruleName -RuleType basic -BackendHttpSettings $poolSetting -HttpListener $listener -BackendAddressPool $pool
Configurer une stratégie SSL par défaut pour les écouteurs ultérieurs
Vous avez configuré une stratégie SSL spécifique à un écouteur lors de la configuration de l’authentification mutuelle. Dans cette étape, vous pouvez éventuellement définir la stratégie SSL par défaut pour les écouteurs à venir que vous créez.
$sslPolicyGlobal = New-AzApplicationGatewaySslPolicy -PolicyType Predefined -PolicyName "AppGwSslPolicy20170401"
Créer la passerelle Application Gateway
En vous basant sur tout ce que nous avons créé ci-dessus, déployez votre instance d’Application Gateway.
$sku = New-AzApplicationGatewaySku -Name Standard_v2 -Tier Standard_v2
$appgw = New-AzApplicationGateway -Name $appgwName -ResourceGroupName $rgname -Zone 1,2 -Location $location -BackendAddressPools $pool -BackendHttpSettingsCollection $poolSetting -FrontendIpConfigurations $fipconfig -GatewayIpConfigurations $gipconfig -FrontendPorts $port -HttpListeners $listener -RequestRoutingRules $rule -Sku $sku -SslPolicy $sslPolicyGlobal -TrustedRootCertificate $trustedRoot -AutoscaleConfiguration $autoscaleConfig -TrustedClientCertificates $trustedClient01 -SslProfiles $sslProfile01 -SslCertificates $sslCert
Nettoyer les ressources
Quand vous n’en avez plus besoin, supprimez le groupe de ressources, la passerelle d’application et toutes les ressources associées à l’aide de Remove-AzResourceGroup.
Remove-AzResourceGroup -Name $rgname
Renouveler les certificats d'autorité de certification clients qui ont expiré
Si votre certificat d’autorité de certification client a expiré, vous pouvez le mettre à jour sur votre passerelle en procédant comme suit :
- Connexion à Azure
Connect-AzAccount Select-AzSubscription -Subscription "<sub name>"
- Obtenir votre configuration Application Gateway
$gateway = Get-AzApplicationGateway -Name "<gateway-name>" -ResourceGroupName "<resource-group-name>"
- Supprimer le certificat client approuvé de la passerelle
Remove-AzApplicationGatewayTrustedClientCertificate -Name "<name-of-client-certificate>" -ApplicationGateway $gateway
- Ajouter le nouveau certificat sur la passerelle
Add-AzApplicationGatewayTrustedClientCertificate -ApplicationGateway $gateway -Name "<name-of-new-cert>" -CertificateFile "<path-to-certificate-file>"
- Mettre à jour la passerelle avec le nouveau certificat
Set-AzApplicationGateway -ApplicationGateway $gateway