Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här snabbstarten visar hur du distribuerar en Azure Application Gateway med mutual TLS (mTLS) genomströmning med hjälp av en Azure Resource Manager-mall (ARM-mall) och API-version 2025-03-01. I genomströmningsläge begär gatewayen ett klientcertifikat men validerar det inte. Certifikatverifiering och principframtvingande sker på serverdelen.
Viktiga funktioner
- Associera en SSL-profil med lyssnaren för mTLS-genomströmning.
- Det krävs inget klient CA-certifikat på gateway.
- Egenskapen
verifyClientAuthModestöderStrictochPassthroughvärden. - Portal support: Du kan konfigurera mTLS-genomströmning direkt i Azure portalen.
Anmärkning
PowerShell- och CLI-stöd för genomströmningskonfiguration är för närvarande inte tillgängliga. Du kan konfigurera mTLS-genomströmning med hjälp av Azure-portalen eller ARM-mallar.
Konfigurera mTLS-genomströmning med hjälp av Azure-portalen
Du kan konfigurera mTLS-genomströmning direkt i Azure portalen genom att skapa en SSL-profil med Passthrough klientautentiseringsmetod:
Gå till din Application Gateway-resurs i Azure-portalen.
Under Inställningar väljer du SSL-profiler.
Välj + Lägg till för att skapa en ny SSL-profil.
Ange ett namn för din SSL-profil.
På fliken Klientautentisering väljer du Passering.
I genomgångsläge är klientcertifikatet valfritt och backend-servern ansvarar för klientautentisering.
- Konfigurera SSL-principinställningar efter behov.
- Välj Lägg till för att skapa SSL-profilen.
- Associera SSL-profilen med HTTPS-lyssnaren.
Förutsättningar
- En Azure-prenumeration och resursgrupp.
- Azure CLI installerat lokalt.
- Ett SSL-certifikat (Base64-kodad PFX) och lösenord.
- En SSH-nyckel för administratör för virtuella Linux-datorer (om tillämpligt).
- API-version
2025-03-01eller senare för egenskapen passthrough.
Distribuera Application Gateway med mTLS genomströmningslyssnare
Den här mallen skapar följande resurser:
- Ett virtuellt nätverk med två undernät (ett delegerat till Application Gateway).
- En offentlig IP-adress för gateway-klientdelen.
- En Application Gateway (Standard_v2) med:
- SSL-certifikat och SSL-profil för genomströmning av klientcertifikat.
- HTTPS-lyssnare och routningsregel.
- Backend-pool som pekar på en appservice.
Uppdatera mallen med din konfigurationsinformation och inkludera ett giltigt SSL-certifikat.
Parameterfil: deploymentParameters.json
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"addressPrefix": {
"value": "10.0.0.0/16"
},
"subnetPrefix": {
"value": "10.0.0.0/24"
},
"skuName": {
"value": "Standard_v2"
},
"capacity": {
"value": 2
},
"adminUsername": {
"value": "ubuntu"
},
"adminSSHKey": {
"value": "<your-ssh-public-key>"
},
"certData": {
"value": "<Base64-encoded-PFX-data>"
},
"certPassword": {
"value": "<certificate-password>"
}
}
}
Mallfil: deploymentTemplate.json
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"addressPrefix": {
"defaultValue": "10.0.0.0/16",
"type": "String",
"metadata": {
"description": "Address prefix for the Virtual Network"
}
},
"subnetPrefix": {
"defaultValue": "10.0.0.0/24",
"type": "String",
"metadata": {
"description": "Subnet prefix"
}
},
"skuName": {
"defaultValue": "Standard_Medium",
"type": "String",
"metadata": {
"description": "Sku Name"
}
},
"capacity": {
"defaultValue": 2,
"type": "Int",
"metadata": {
"description": "Number of instances"
}
},
"adminUsername": {
"type": "String"
},
"adminSSHKey": {
"type": "securestring"
},
"certData": {
"type": "String",
"metadata": {
"description": "ssl cert data"
}
},
"certPassword": {
"type": "SecureString",
"metadata": {
"description": "ssl cert password"
}
}
},
"variables": {
"applicationGatewayName": "mtlsAppGw",
"idName": "identity",
"publicIPAddressName": "mtlsPip",
"virtualNetworkName": "mtlsVnet",
"subnetName": "appgwsubnet",
"vnetID": "[resourceId('Microsoft.Network/virtualNetworks',variables('virtualNetworkName'))]",
"subnetRef": "[concat(variables('vnetID'),'/subnets/',variables('subnetName'))]",
"publicIPRef": "[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]",
"applicationGatewayID": "[resourceId('Microsoft.Network/applicationGateways',variables('applicationGatewayName'))]",
"apiVersion": "2025-03-01",
"identityID": "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities',variables('idName'))]",
"backendSubnetId": "[concat(variables('vnetID'),'/subnets/backendsubnet')]"
},
"resources": [
{
"type": "Microsoft.Network/virtualNetworks",
"name": "[variables('virtualNetworkName')]",
"apiVersion": "2024-07-01",
"location": "[resourceGroup().location]",
"properties": {
"addressSpace": {
"addressPrefixes": [
"[parameters('addressPrefix')]"
]
},
"subnets": [
{
"name": "[variables('subnetName')]",
"properties": {
"addressPrefix": "[parameters('subnetPrefix')]",
"delegations": [
{
"name": "Microsoft.Network/applicationGateways",
"properties": {
"serviceName": "Microsoft.Network/applicationGateways"
}
}
]
}
},
{
"name": "backendSubnet",
"properties": {
"addressPrefix": "10.0.2.0/24"
}
}
]
}
},
{
"type": "Microsoft.Network/publicIPAddresses",
"sku": {
"name": "Standard"
},
"name": "[variables('publicIPAddressName')]",
"apiVersion": "2024-07-01",
"location": "[resourceGroup().location]",
"properties": {
"publicIPAllocationMethod": "Static"
}
},
{
"type": "Microsoft.Network/applicationGateways",
"name": "[variables('applicationGatewayName')]",
"apiVersion": "[variables('apiVersion')]",
"location": "[resourceGroup().location]",
"properties": {
"sku": {
"name": "Standard_v2",
"tier": "Standard_v2",
"capacity": 3
},
"sslCertificates": [
{
"name": "sslCert",
"properties": {
"data": "[parameters('certData')]",
"password": "[parameters('certPassword')]"
}
}
],
"sslPolicy": {
"policyType": "Predefined",
"policyName": "AppGwSslPolicy20220101"
},
"sslProfiles": [
{
"name": "sslnotrustedcert",
"id": "[concat(resourceId('Microsoft.Network/applicationGateways', variables('applicationGatewayName')), '/sslProfiles/sslnotrustedcert')]",
"properties": {
"clientAuthConfiguration": {
"VerifyClientCertIssuerDN": false,
"VerifyClientRevocation": "None",
"VerifyClientAuthMode": "Passthrough"
}
}
}
],
"gatewayIPConfigurations": [
{
"name": "appGatewayIpConfig",
"properties": {
"subnet": {
"id": "[variables('subnetRef')]"
}
}
}
],
"frontendIPConfigurations": [
{
"name": "appGatewayFrontendIP",
"properties": {
"PublicIPAddress": {
"id": "[variables('publicIPRef')]"
}
}
}
],
"frontendPorts": [
{
"name": "port2",
"properties": {
"Port": 444
}
}
],
"backendAddressPools": [
{
"name": "pool2",
"properties": {
"BackendAddresses": [
{
"fqdn": "headerappgw-hsa5gjh8fpfebcfd.westus-01.azurewebsites.net"
}
]
}
}
],
"backendHttpSettingsCollection": [
{
"name": "settings2",
"properties": {
"Port": 80,
"Protocol": "Http"
}
}
],
"httpListeners": [
{
"name": "listener2",
"properties": {
"FrontendIPConfiguration": {
"Id": "[concat(variables('applicationGatewayID'), '/frontendIPConfigurations/appGatewayFrontendIP')]"
},
"FrontendPort": {
"Id": "[concat(variables('applicationGatewayID'), '/frontendPorts/port2')]"
},
"Protocol": "Https",
"SslCertificate": {
"Id": "[concat(variables('applicationGatewayID'), '/sslCertificates/sslCert')]"
},
"sslProfile": {
"id": "[concat(variables('applicationGatewayID'), '/sslProfiles/sslnotrustedcert')]"
}
}
}
],
"requestRoutingRules": [
{
"Name": "rule2",
"properties": {
"RuleType": "Basic",
"priority": 2000,
"httpListener": {
"id": "[concat(variables('applicationGatewayID'), '/httpListeners/listener2')]"
},
"backendAddressPool": {
"id": "[concat(variables('applicationGatewayID'), '/backendAddressPools/pool2')]"
},
"backendHttpSettings": {
"id": "[concat(variables('applicationGatewayID'), '/backendHttpSettingsCollection/settings2')]"
}
}
}
]
},
"dependsOn": [
"[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]",
"[concat('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]"
]
}
]
}
Använd mallen
Kör följande Azure CLI kommando för att distribuera mallen:
az deployment group create \
--resource-group <your-resource-group> \
--template-file deploymentTemplate.json \
--parameters @deploymentParameters.json
Validera och testa
Verifiera utplaceringen
I Azure Portal går du till din Application Gateway-resurs.
Välj JSON-vy och välj API-version
2025-03-01.Kontrollera att
verifyClientAuthModeär inställt påPassthroughi SSL-profilen."sslProfiles": [ { "name": "sslnotrustedcert", "id": "<sample-subscription-id>", "etag": "W/\"851e4e20-d2b1-4338-9135-e0beac11aa0e\"", "properties": { "provisioningState": "Succeeded", "clientAuthConfiguration": { "verifyClientCertIssuerDN": false, "verifyClientRevocation": "None", "verifyClientAuthMode": "Passthrough" }, "httpListeners": [ { "id": "<sample-subscription-id>" } ] } } ]
Skicka ett klientcertifikat till serverdelen
Om du behöver vidarebefordra klientcertifikatet till serverdelen konfigurerar du en omskrivningsregel. Mer information finns i Skriva om HTTP-huvuden och URL med Application Gateway.
När klienten skickar ett certifikat säkerställer den här omskrivningen att klientcertifikatet ingår i begärandehuvudena för serverdelsbearbetning.
Testa anslutningen
Kontrollera att anslutningar upprättas även när ett klientcertifikat inte har angetts.
mTLS-genomströmningsparametrar
I följande tabell beskrivs parametrarna för mTLS-genomströmningskonfiguration:
| Namn | Typ | Description |
|---|---|---|
verifyClientCertIssuerDN |
Boolean | Anger om klientens certifikatutfärdarnamn ska verifieras på gatewayen. |
verifyClientRevocation |
String | Anger verifieringsläget för återkallning av klientcertifikat. |
verifyClientAuthMode |
String | Anger klientcertifikatläget. Giltiga värden är Strict och Passthrough. |
Genomströmningsläge: Gatewayen begär ett klientcertifikat men framtvingar det inte. Serverdelen validerar certifikatet och tillämpar principen.
Säkerhetsfrågor
Följ organisationens metodtips för säkerhets- och datahantering när du distribuerar och hanterar den här lösningen.