|
| 1 | +--- |
| 2 | +title: Manage minimum TLS versions for Azure App Service, Azure Functions, and Logic Apps (Standard) |
| 3 | +description: Learn how to check, audit, and update the minimum TLS version for Azure App Service, Azure Functions, and Logic Apps (Standard) to enforce TLS 1.2 or later. |
| 4 | +author: msangapu-msft |
| 5 | +ms.author: msangapu |
| 6 | +ms.topic: conceptual |
| 7 | +ms.date: 03/30/2026 |
| 8 | +ms.service: azure-app-service |
| 9 | +--- |
| 10 | + |
| 11 | +# Manage minimum TLS versions for Azure App Service, Azure Functions, and Logic Apps (Standard) |
| 12 | + |
| 13 | +## Overview |
| 14 | + |
| 15 | +Transport Layer Security (TLS) 1.0 and 1.1 are legacy security protocols with known vulnerabilities. Microsoft recommends configuring your apps to require TLS 1.2 or later for all inbound connections. |
| 16 | + |
| 17 | +You can enforce a minimum TLS version for the following App Service platform resources: |
| 18 | + |
| 19 | +- **Azure App Service** (Web Apps on Windows and Linux) |
| 20 | +- **Azure Functions** |
| 21 | +- **Azure Logic Apps (Standard)** |
| 22 | +- **App Service Environments (ASE)** |
| 23 | + |
| 24 | +New apps are created with a default minimum TLS version of 1.2. If your app is already configured for TLS 1.2 or later, your app meets current security best practices. |
| 25 | + |
| 26 | +## Check your minimum TLS version |
| 27 | + |
| 28 | +Your app has two independent TLS version settings: |
| 29 | + |
| 30 | +- **Minimum Inbound TLS Version**: applies to client traffic to your app (for example, `yourapp.azurewebsites.net`). |
| 31 | +- **SCM Minimum Inbound TLS Version**: applies to the SCM (Kudu) site used for deployments, log streaming, and advanced tooling (for example, `yourapp.scm.azurewebsites.net`). |
| 32 | + |
| 33 | +Both settings should be set to TLS 1.2 or later to fully secure your app. |
| 34 | + |
| 35 | +### [Portal](#tab/portal) |
| 36 | + |
| 37 | +1. In the [Azure portal](https://portal.azure.com), go to your App Service, Functions, or Logic Apps (Standard) app. |
| 38 | +1. On the left menu, select **Settings** > **Configuration**. |
| 39 | +1. Select the **General settings** tab. |
| 40 | +1. Check the values for **Minimum Inbound TLS Version** and **SCM Minimum Inbound TLS Version**. |
| 41 | + |
| 42 | +### [Azure CLI](#tab/cli) |
| 43 | + |
| 44 | +For **App Service**: |
| 45 | + |
| 46 | +```azurecli |
| 47 | +az webapp show --name <app-name> --resource-group <resource-group> \ |
| 48 | + --query "siteConfig.{siteTls:minTlsVersion, scmTls:scmMinTlsVersion}" \ |
| 49 | + --output table |
| 50 | +``` |
| 51 | + |
| 52 | +For **Azure Functions**: |
| 53 | + |
| 54 | +```azurecli |
| 55 | +az functionapp show --name <app-name> --resource-group <resource-group> \ |
| 56 | + --query "siteConfig.{siteTls:minTlsVersion, scmTls:scmMinTlsVersion}" \ |
| 57 | + --output table |
| 58 | +``` |
| 59 | + |
| 60 | +For **Logic Apps (Standard)**: |
| 61 | + |
| 62 | +```azurecli |
| 63 | +az logicapp show --name <app-name> --resource-group <resource-group> \ |
| 64 | + --query "siteConfig.{siteTls:minTlsVersion, scmTls:scmMinTlsVersion}" \ |
| 65 | + --output table |
| 66 | +``` |
| 67 | + |
| 68 | +### [PowerShell](#tab/powershell) |
| 69 | + |
| 70 | +The following command works for App Service, Azure Functions, and Logic Apps (Standard): |
| 71 | + |
| 72 | +```azurepowershell |
| 73 | +$app = Get-AzWebApp -Name <app-name> -ResourceGroupName <resource-group> |
| 74 | +$app.SiteConfig.MinTlsVersion |
| 75 | +``` |
| 76 | + |
| 77 | +> [!NOTE] |
| 78 | +> `Get-AzWebApp` may return an empty value for `ScmMinTlsVersion` on some resource types. To reliably check both site and SCM minimum TLS versions, use the Azure CLI. |
| 79 | +
|
| 80 | +--- |
| 81 | + |
| 82 | +> [!NOTE] |
| 83 | +> Deployment slots have their own independent TLS settings. Check each slot separately. |
| 84 | +
|
| 85 | +## Check for TLS 1.0 and 1.1 traffic |
| 86 | + |
| 87 | +Before updating your minimum TLS version, check whether your app currently receives traffic over TLS 1.0 or 1.1. This helps you identify clients that would be affected by a change. |
| 88 | + |
| 89 | +1. In the [Azure portal](https://portal.azure.com), go to your App Service, Functions, or Logic Apps (Standard) app. |
| 90 | +1. Select **Diagnose and Solve Problems** from the left menu. |
| 91 | +1. Search for **Minimum TLS Version Checker**. |
| 92 | + |
| 93 | +> [!TIP] |
| 94 | +> The detector list may take a moment to load. If the search returns no results, wait a few seconds and try again. |
| 95 | +
|
| 96 | +The detector shows: |
| 97 | + |
| 98 | +- Your app's current minimum TLS version setting. |
| 99 | +- A summary of requests by TLS version over the last 24 hours. |
| 100 | +- Clients that made requests using TLS 1.0 and TLS 1.1. |
| 101 | + |
| 102 | +If you see TLS 1.0 or 1.1 traffic, identify those clients before updating your minimum TLS version. See [Common scenarios that use TLS 1.0 or 1.1](#common-scenarios-that-use-tls-10-or-11) for guidance. |
| 103 | + |
| 104 | +> [!NOTE] |
| 105 | +> This detector shows a snapshot from the last 24 hours. Check during peak traffic times for a more complete picture. |
| 106 | +
|
| 107 | +## Update your minimum TLS version |
| 108 | + |
| 109 | +After you confirm that your clients support TLS 1.2 or later, update both the site and SCM minimum TLS version settings. |
| 110 | + |
| 111 | +### [Portal](#tab/portal) |
| 112 | + |
| 113 | +1. In the [Azure portal](https://portal.azure.com), go to your App Service, Functions, or Logic Apps (Standard) app. |
| 114 | +1. On the left menu, select **Settings** > **Configuration**. |
| 115 | +1. Select the **General settings** tab. |
| 116 | +1. Set **Minimum Inbound TLS Version** to **1.2**. |
| 117 | +1. Set **SCM Minimum Inbound TLS Version** to **1.2**. |
| 118 | +1. Select **Apply**. |
| 119 | + |
| 120 | +### [Azure CLI](#tab/cli) |
| 121 | + |
| 122 | +**Update the site minimum TLS version:** |
| 123 | + |
| 124 | +For **App Service**: |
| 125 | + |
| 126 | +```azurecli |
| 127 | +az webapp config set --name <app-name> --resource-group <resource-group> \ |
| 128 | + --min-tls-version 1.2 |
| 129 | +``` |
| 130 | + |
| 131 | +For **Azure Functions**: |
| 132 | + |
| 133 | +```azurecli |
| 134 | +az functionapp config set --name <app-name> --resource-group <resource-group> \ |
| 135 | + --min-tls-version 1.2 |
| 136 | +``` |
| 137 | + |
| 138 | +For **Logic Apps (Standard)**: |
| 139 | + |
| 140 | +The `az logicapp` CLI doesn't support `config set`. Use `az resource update` to update the site minimum TLS version: |
| 141 | + |
| 142 | +```azurecli |
| 143 | +az resource update \ |
| 144 | + --ids "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Web/sites/<app-name>/config/web" \ |
| 145 | + --set properties.minTlsVersion=1.2 |
| 146 | +``` |
| 147 | + |
| 148 | +**Update the SCM site minimum TLS version:** |
| 149 | + |
| 150 | +The following command works for all resource types (App Service, Azure Functions, and Logic Apps Standard): |
| 151 | + |
| 152 | +```azurecli |
| 153 | +az resource update \ |
| 154 | + --ids "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Web/sites/<app-name>/config/web" \ |
| 155 | + --set properties.scmMinTlsVersion=1.2 |
| 156 | +``` |
| 157 | + |
| 158 | +> [!NOTE] |
| 159 | +> The `az webapp config set` and `az functionapp config set` commands don't support a `--scm-min-tls-version` parameter. Use `az resource update` to update the SCM minimum TLS version. |
| 160 | +
|
| 161 | +### [PowerShell](#tab/powershell) |
| 162 | + |
| 163 | +The following command works for App Service, Azure Functions, and Logic Apps (Standard): |
| 164 | + |
| 165 | +```azurepowershell |
| 166 | +Set-AzWebApp -Name <app-name> -ResourceGroupName <resource-group> -MinTlsVersion 1.2 |
| 167 | +``` |
| 168 | + |
| 169 | +> [!NOTE] |
| 170 | +> `Set-AzWebApp` does not support updating the SCM minimum TLS version. Use the Azure CLI `az resource update` command to update the SCM minimum TLS version. |
| 171 | +
|
| 172 | +--- |
| 173 | + |
| 174 | +> [!NOTE] |
| 175 | +> Deployment slots have their own independent TLS settings. Update each slot separately. |
| 176 | +
|
| 177 | +## Find apps using older TLS versions at scale |
| 178 | + |
| 179 | +Azure Resource Graph and list APIs (such as `az webapp list` and `Get-AzWebApp`) don't return `siteConfig` properties. To audit minimum TLS versions across your subscription, use Azure Policy. |
| 180 | + |
| 181 | +### Audit with Azure Policy |
| 182 | + |
| 183 | +Azure Policy evaluates your resources server-side and reports which apps don't meet the required TLS version, without making any changes. |
| 184 | + |
| 185 | +1. In the [Azure portal](https://portal.azure.com), search for and select **Policy**. |
| 186 | +1. Select **Definitions** from the left menu. |
| 187 | +1. Search for and assign these **audit** policies: |
| 188 | + - *App Service apps should use the latest TLS version* |
| 189 | + - *App Service app slots should use the latest TLS version* |
| 190 | + - *Function apps should use the latest TLS version* |
| 191 | + - *Function app slots should use the latest TLS version* |
| 192 | +1. Set the **Scope** to your subscription or management group. |
| 193 | +1. Select **Review + create**, then **Create**. |
| 194 | +1. After the policy evaluates (up to 30 minutes for a new assignment), go to **Policy** > **Compliance** to view non-compliant resources. |
| 195 | + |
| 196 | +> [!WARNING] |
| 197 | +> Azure Policy also offers remediation policies that start with **"Configure"** (for example, *Configure App Service apps to use the latest TLS version*). These policies use a **DeployIfNotExists** effect and **will actively update your TLS settings**. Only assign remediation policies after you've confirmed that your clients support TLS 1.2 or later. |
| 198 | +
|
| 199 | +> [!NOTE] |
| 200 | +> The built-in policies audit the main site minimum TLS version (`minTlsVersion`). There is currently no built-in policy for the SCM site minimum TLS version (`scmMinTlsVersion`). Check SCM settings individually using the CLI or PowerShell commands in the [Check your minimum TLS version](#check-your-minimum-tls-version) section. |
| 201 | +
|
| 202 | +For the full list of App Service policy definitions, see [Azure Policy built-in definitions for Azure App Service](policy-reference.md). |
| 203 | + |
| 204 | +## Common scenarios that use TLS 1.0 or 1.1 |
| 205 | + |
| 206 | +The following are common reasons your app might receive inbound requests using TLS 1.0 or 1.1. If any of these scenarios apply to you, work with the client owner to ensure they support TLS 1.2 or later before you update the minimum TLS version. |
| 207 | + |
| 208 | +| Scenario | What to check | More info | |
| 209 | +|----------|--------------|-----------| |
| 210 | +| .NET Framework clients calling your app | Versions before 4.7 may default to TLS 1.0 unless explicitly configured | [TLS best practices with .NET Framework](/dotnet/framework/network-programming/tls) | |
| 211 | +| Older Java clients calling your app | Older Java versions may not negotiate TLS 1.2 by default | [Solving the TLS 1.0 Problem](/security/engineering/solving-tls1-problem) | |
| 212 | +| Older mobile devices calling your app | Older Android and iOS versions may not use TLS 1.2 by default | Test with your target devices | |
| 213 | +| IoT or embedded devices calling your API | Device firmware may only support TLS 1.0 or 1.1 | Check with the device manufacturer | |
| 214 | +| Third-party services sending webhooks to your app | The caller's stack may use a legacy TLS version | Contact the third party to confirm TLS 1.2 support | |
| 215 | +| CI/CD agents deploying to your SCM site | Self-hosted build agents on outdated operating systems | Update the agent machine's OS and tooling | |
| 216 | +| Scripts calling your app (PowerShell, curl) | Older scripting runtimes may default to TLS 1.0 | [Solving the TLS 1.0 Problem](/security/engineering/solving-tls1-problem) | |
| 217 | + |
| 218 | +**General guidance for clients connecting to your app:** |
| 219 | + |
| 220 | +- Update client operating systems, libraries, and frameworks to their latest versions. |
| 221 | +- Avoid hardcoding TLS protocol versions in client code. Defer to operating system defaults when possible. |
| 222 | +- Use [Fiddler](https://www.telerik.com/fiddler) on the client machine to verify which TLS version it negotiates with your app. |
| 223 | + |
| 224 | +## Frequently asked questions |
| 225 | + |
| 226 | +### What happens when I set a higher minimum TLS version? |
| 227 | + |
| 228 | +The App Service platform rejects all inbound connections that use a TLS version below the configured minimum. Clients that attempt to connect with an unsupported TLS version receive a connection error. |
| 229 | + |
| 230 | +### Do I need to update each deployment slot? |
| 231 | + |
| 232 | +Yes. Each deployment slot has its own independent `minTlsVersion` and `scmMinTlsVersion` settings. Update each slot individually. |
| 233 | + |
| 234 | +### Does this affect outbound connections from my app? |
| 235 | + |
| 236 | +No. This change applies to **inbound** connections to your app only. Outbound connections from your app to other services are governed by the target server's TLS requirements and your app's client configuration. |
| 237 | + |
| 238 | +### Does this affect custom domains, or also *.azurewebsites.net? |
| 239 | + |
| 240 | +Both. The minimum TLS version setting applies to all inbound traffic to your app, regardless of the hostname used. |
| 241 | + |
| 242 | +### Does this apply to Azure Functions and Logic Apps? |
| 243 | + |
| 244 | +Yes. Azure Functions and Logic Apps (Standard) run on the App Service platform and support the same TLS version settings. Logic Apps Consumption (multitenant) runs on a separate platform and is not covered in this article. |
| 245 | + |
| 246 | +## Related content |
| 247 | + |
| 248 | +- [What is TLS/SSL in Azure App Service?](overview-tls.md) |
| 249 | +- [Configure an App Service app](configure-common.md) |
| 250 | +- [Azure Policy built-in definitions for Azure App Service](policy-reference.md) |
| 251 | +- [Solving the TLS 1.0 Problem, 2nd Edition](/security/engineering/solving-tls1-problem) |
| 252 | +- [Transport Layer Security best practices with .NET Framework](/dotnet/framework/network-programming/tls) |
| 253 | +- [Retirement: Update on retirement of TLS 1.0 and TLS 1.1 versions for Azure Services](https://azure.microsoft.com/updates/azure-support-tls-will-end-by-31-october-2024-2/) |
| 254 | + |
0 commit comments