Skip to content

Commit ff5ee12

Browse files
Merge pull request #303898 from MicrosoftDocs/main
Auto Publish – main to live - 2025-08-06 11:00 UTC
2 parents a8d9dd2 + 15568f1 commit ff5ee12

34 files changed

+285
-130
lines changed

articles/app-service/app-service-managed-certificate-changes-july-2025.md

Lines changed: 109 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,18 +29,118 @@ For a detailed explanation of the underlying changes at DigiCert, refer to [chan
2929
3030
## Impacted scenarios
3131

32-
You can't create or renew ASMCs if:
33-
- Your app is not publicly accessible.
34-
- You use Azure Traffic Manager with nested or external endpoints.
35-
- You rely on `*.trafficmanager.net` domains.
32+
You can't create or renew ASMCs if your:
33+
- Site is not publicly accessible:
34+
- Public accessibility to your app is required. If your app is only accessible through private configurations, such as requiring a client certificate, disabling public network access, using private endpoints, or applying IP restrictions, you can't create or renew a managed certificate.
35+
- Other configurations that restrict public access, such as firewalls, authentication gateways, or custom access policies, may also affect eligibility for managed certificate issuance or renewal.
3636

37-
Existing certificates remain valid until expiration (up to 6 months), but will not renew automatically if your configuration is unsupported.
37+
- Site is an Azure Traffic Manager "nested" or "external" endpoint:
38+
- Only "Azure Endpoints" on Traffic Manager is supported for certificate creation and renewal.
39+
- "Nested endpoints" and "External endpoints" is not supported.
40+
- Site relies on _*.trafficmanager.net_ domains:
41+
- Certificates for _*.trafficmanager.net_ domains is not supported for creation or renewal.
42+
43+
Existing certificates remain valid until expiration (up to six months), but will not renew automatically if your configuration is unsupported.
44+
45+
## Identify impacted resources
46+
You can use [Azure Resource Graph (ARG)](https://portal.azure.com/?feature.customPortal=false#view/HubsExtension/ArgQueryBlade) queries to help identify resources that may be affected under each scenario. These queries are provided as a starting point and may not capture every configuration. Review your environment for any unique setups or custom configurations.
47+
48+
### Scenario 1: Site is not publicly accessible
49+
This ARG query retrieves a list of sites that either have the public network access property disabled or are configured to use client certificates. It then filters for sites that are using App Service Managed Certificates (ASMC) for their custom hostname SSL bindings. These certificates are the ones that could be affected by the upcoming changes. However, this query does not provide complete coverage, as there may be other configurations impacting public access to your app that are not included here. Ultimately, this query serves as a helpful guide for users, but a thorough review of your environment is recommended. You can copy this query, paste it into [ARG Explorer](https://portal.azure.com/?feature.customPortal=false#view/HubsExtension/ArgQueryBlade), and then click "Run query" to view the results for your environment.
50+
51+
```kql
52+
// ARG Query: Identify App Service sites that commonly restrict public access and use ASMC for custom hostname SSL bindings
53+
resources
54+
| where type == "microsoft.web/sites"
55+
// Extract relevant properties for public access and client certificate settings
56+
| extend
57+
publicNetworkAccess = tolower(tostring(properties.publicNetworkAccess)),
58+
clientCertEnabled = tolower(tostring(properties.clientCertEnabled))
59+
// Filter for sites that either have public network access disabled
60+
// or have client certificates enabled (both can restrict public access)
61+
| where publicNetworkAccess == "disabled"
62+
or clientCertEnabled != "false"
63+
// Expand the list of SSL bindings for each site
64+
| mv-expand hostNameSslState = properties.hostNameSslStates
65+
| extend
66+
hostName = tostring(hostNameSslState.name),
67+
thumbprint = tostring(hostNameSslState.thumbprint)
68+
// Only consider custom domains (exclude default *.azurewebsites.net) and sites with an SSL certificate bound
69+
| where tolower(hostName) !endswith "azurewebsites.net" and isnotempty(thumbprint)
70+
// Select key site properties for output
71+
| project siteName = name, siteId = id, siteResourceGroup = resourceGroup, thumbprint, publicNetworkAccess, clientCertEnabled
72+
// Join with certificates to find only those using App Service Managed Certificates (ASMC)
73+
// ASMCs are identified by the presence of the "canonicalName" property
74+
| join kind=inner (
75+
resources
76+
| where type == "microsoft.web/certificates"
77+
| extend
78+
certThumbprint = tostring(properties.thumbprint),
79+
canonicalName = tostring(properties.canonicalName) // Only ASMC uses the "canonicalName" property
80+
| where isnotempty(canonicalName)
81+
| project certName = name, certId = id, certResourceGroup = tostring(properties.resourceGroup), certExpiration = properties.expirationDate, certThumbprint, canonicalName
82+
) on $left.thumbprint == $right.certThumbprint
83+
// Final output: sites with restricted public access and using ASMC for custom hostname SSL bindings
84+
| project siteName, siteId, siteResourceGroup, publicNetworkAccess, clientCertEnabled, thumbprint, certName, certId, certResourceGroup, certExpiration, canonicalName
85+
```
86+
87+
88+
### Scenario 2: Site is an Azure Traffic Manager "nested" or "external" endpoint
89+
If your App Service uses custom domains routed through **Azure Traffic Manager**, you may be impacted if your profile includes **external** or **nested endpoints**. These endpoint types are not supported for certificate issuance or renewal under the new validation.
90+
91+
To help identify affected Traffic Manager profiles across your subscriptions, we recommend using [this PowerShell script](https://github.com/nimccoll/NonAzureTrafficManagerEndpoints) developed by the Microsoft team. It scans for profiles with non-Azure endpoints and outputs a list of potentially impacted resources.
92+
93+
> [!NOTE]
94+
> You need at least Reader access to all subscriptions to run the script successfully.
95+
>
96+
97+
To run the script:
98+
1. Download the [PowerShell script from GitHub](https://github.com/nimccoll/NonAzureTrafficManagerEndpoints).
99+
1. Open PowerShell and navigate to the script location.
100+
1. Run the script.
101+
```
102+
.\TrafficManagerNonAzureEndpoints.ps1
103+
```
104+
105+
### Scenario 3: Site relies on _*.trafficmanager.net_ domains
106+
This ARG query helps you identify App Service Managed Certificates (ASMC) that were issued to _*.trafficmanager.net domains_. In addition, it also checks whether any web apps are currently using those certificates for custom domain SSL bindings. You can copy this query, paste it into [ARG Explorer](https://portal.azure.com/?feature.customPortal=false#view/HubsExtension/ArgQueryBlade), and then click "Run query" to view the results for your environment.
107+
108+
```kql
109+
// ARG Query: Identify App Service Managed Certificates (ASMC) issued to *.trafficmanager.net domains
110+
// Also checks if any web apps are currently using those certificates for custom domain SSL bindings
111+
resources
112+
| where type == "microsoft.web/certificates"
113+
// Extract the certificate thumbprint and canonicalName (ASMCs have a canonicalName property)
114+
| extend
115+
certThumbprint = tostring(properties.thumbprint),
116+
canonicalName = tostring(properties.canonicalName) // Only ASMC uses the "canonicalName" property
117+
// Filter for certificates issued to *.trafficmanager.net domains
118+
| where canonicalName endswith "trafficmanager.net"
119+
// Select key certificate properties for output
120+
| project certName = name, certId = id, certResourceGroup = tostring(properties.resourceGroup), certExpiration = properties.expirationDate, certThumbprint, canonicalName
121+
// Join with web apps to see if any are using these certificates for SSL bindings
122+
| join kind=leftouter (
123+
resources
124+
| where type == "microsoft.web/sites"
125+
// Expand the list of SSL bindings for each site
126+
| mv-expand hostNameSslState = properties.hostNameSslStates
127+
| extend
128+
hostName = tostring(hostNameSslState.name),
129+
thumbprint = tostring(hostNameSslState.thumbprint)
130+
// Only consider bindings for *.trafficmanager.net custom domains with a certificate bound
131+
| where tolower(hostName) endswith "trafficmanager.net" and isnotempty(thumbprint)
132+
// Select key site properties for output
133+
| project siteName = name, siteId = id, siteResourceGroup = resourceGroup, thumbprint
134+
) on $left.certThumbprint == $right.thumbprint
135+
// Final output: ASMCs for *.trafficmanager.net domains and any web apps using them
136+
| project certName, certId, certResourceGroup, certExpiration, canonicalName, siteName, siteId, siteResourceGroup
137+
```
38138

39139
## Mitigation guidance
40140

41141
### Scenario 1: Site is not publicly accessible
42142

43-
Apps that are not accessible from the public internet will not be able to create or renew ASMCs. This includes restrictions via private endpoints, firewalls, IP restrictions, client certificates, authentication gateways, or custom access policies.
143+
Apps that are not accessible from the public internet cannot create or renew ASMCs. These configurations may include restrictions enforced through private endpoints, firewalls, IP filtering, client certificates, authentication gateways, or custom access policies.
44144

45145
We recognize that making applications publicly accessible may conflict with customer security policies or introduce risk. The recommended mitigation is to replace ASMC with a custom certificate and update the TLS/SSL binding for your custom domain.
46146

@@ -91,17 +191,17 @@ Some customers may choose to allowlist [DigiCert’s domain validation IPs](http
91191
For guidance on configuring access restrictions, refer to [set up Azure App Service access restrictions](app-service-ip-restrictions.md).
92192

93193

94-
### Scenario 2: Azure Traffic Manager with nested or external endpoints
194+
### Scenario 2: Site is an Azure Traffic Manager "nested" or "external" endpoint
95195

96-
Only Azure Endpoints are supported. Nested and External endpoints are not supported for ASMC validation.
196+
Only "Azure Endpoints" are supported. "Nested" and "External" endpoints are not supported for ASMC validation.
97197

98198
**Recommended mitigation:**
99199

100200
- Switch to Azure Endpoints or use a custom domain secured with a custom certificate.
101201
- For guidance on using App Service as an Azure Traffic Manager endpoint, refer to [App Service and Traffic Manager Profiles](web-sites-traffic-manager.md#app-service-and-traffic-manager-profiles).
102202

103203

104-
### Scenario 3: Use of trafficmanager.net domains
204+
### Scenario 3: Site relies on _*.trafficmanager.net_ domains
105205

106206
Certificates for `*.trafficmanager.net` domains are not supported. If your app relies on this domain and uses ASMC, you need to remove that dependency and secure your app using a custom domain and certificate.
107207

articles/azure-app-configuration/configuration-provider-overview.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@ Key Vault References | [GA](./reference-dotnet-provider.md#key-vault-reference)
5959
Key Vault Secret Refresh | [GA](./reference-dotnet-provider.md#key-vault-secret-refresh) | WIP | GA | WIP | WIP | GA
6060
Custom Key Vault Secret Resolution | [GA](./reference-dotnet-provider.md#key-vault-reference) | GA | GA | GA | [GA](./reference-javascript-provider.md#key-vault-reference) | GA
6161
Parallel Secret Resolution | WIP | WIP | WIP | WIP | [GA](./reference-javascript-provider.md#parallel-secret-resolution) | GA
62-
Feature Flags | [GA](./reference-dotnet-provider.md#feature-flag) | GA | GA | GA | [GA](./reference-javascript-provider.md#feature-flag) | WIP
63-
Variant Feature Flags | [GA](./reference-dotnet-provider.md#feature-flag) | GA | GA | GA | [GA](./reference-javascript-provider.md#feature-flag) | WIP
62+
Feature Flags | [GA](./reference-dotnet-provider.md#feature-flag) | GA | GA | GA | [GA](./reference-javascript-provider.md#feature-flag) | GA
63+
Variant Feature Flags | [GA](./reference-dotnet-provider.md#feature-flag) | GA | GA | GA | [GA](./reference-javascript-provider.md#feature-flag) | GA
6464
Feature Flag Telemetry | GA | GA | WIP | GA | GA | WIP
6565
Key Prefix Trim | [GA](./reference-dotnet-provider.md#trim-prefix-from-keys) | GA | GA | GA | [GA](./reference-javascript-provider.md#trim-prefix-from-keys) | GA
6666
Configurable Startup Time-out | [GA](./reference-dotnet-provider.md#startup-retry) | WIP | N/A | WIP | [GA](./reference-javascript-provider.md#startup-retry) | WIP

articles/azure-app-configuration/feature-management-overview.md

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ Module | Platform | Sample | Release Notes
2727
[spring-cloud-azure-feature-management-web](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/spring-cloud-azure-feature-management-web)<br/>[![Maven: spring-cloud-azure-feature-management-web](https://img.shields.io/maven-central/v/com.azure.spring/spring-cloud-azure-feature-management-web.svg?color=blue)](https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-feature-management-web) | Spring Boot | [Sample](https://github.com/Azure-Samples/azure-spring-boot-samples/tree/main/appconfiguration/spring-cloud-azure-feature-management-web/spring-cloud-azure-feature-management-web-sample) | [Release Notes](https://github.com/Azure/AppConfiguration/blob/main/releaseNotes/SpringCloudAzureFeatureManagement.md)
2828
[featuremanagement](https://github.com/microsoft/FeatureManagement-Python)<br/>[![PyPi](https://img.shields.io/pypi/v/FeatureManagement?color=blue)](https://pypi.org/project/FeatureManagement/) | Python | [Sample](https://github.com/microsoft/FeatureManagement-Python/tree/main/samples) | [Release Notes](https://github.com/Azure/AppConfiguration/blob/main/releaseNotes/PythonFeatureManagement.md)
2929
[@microsoft/feature-management](https://github.com/microsoft/FeatureManagement-JavaScript)<br/>[![npm](https://img.shields.io/npm/v/@microsoft/feature-management?color=blue)](https://www.npmjs.com/package/@microsoft/feature-management) | JavaScript | [Sample](https://github.com/microsoft/FeatureManagement-JavaScript/tree/main/examples) | [Release Notes](https://github.com/Azure/AppConfiguration/blob/main/releaseNotes/JavaScriptFeatureManagement.md)
30+
[featuremanagement](https://github.com/microsoft/FeatureManagement-Go)<br/><a href="https://pkg.go.dev/github.com/microsoft/Featuremanagement-Go/featuremanagement"><img src="media/go-provider.png" alt="Go" width="90" height="20"></a> | Go | [Sample](https://github.com/microsoft/FeatureManagement-Go/tree/main/example) | [Release Notes](https://github.com/Azure/AppConfiguration/blob/main/releaseNotes/GoFeatureManagement.md)
3031

3132
## Feature Development Status
3233

@@ -37,20 +38,20 @@ This is an overview of each feature and its current status for different framewo
3738
- **WIP (Work in Progress)**: The feature is actively being developed and not yet ready for release.
3839
- **N/A (Not Available)**: It is not planned to offer the feature for the specified framework or language.
3940

40-
Feature | .NET | Spring | Python | JavaScript
41-
------- | ---- | ------ | ------ | ----------
42-
Targeting Filter | [GA](./feature-management-dotnet-reference.md#targeting) | GA | [GA](./feature-management-python-reference.md#targeting) | [GA](./feature-management-javascript-reference.md#targeting)
43-
Targeting Exclusion | [GA](./feature-management-dotnet-reference.md#targeting-exclusion) | GA | [GA](./feature-management-python-reference.md#targeting-exclusion) | [GA](./feature-management-javascript-reference.md#targeting-exclusion)
44-
Ambient Targeting | [GA](./feature-management-dotnet-reference.md#targeting-in-a-web-application) | WIP | WIP | [GA](./feature-management-javascript-reference.md#targeting-in-a-web-application)
45-
Time Window Filter | [GA](./feature-management-dotnet-reference.md#microsofttimewindow) | GA | [GA](./feature-management-python-reference.md#microsofttimewindow) | [GA](./feature-management-javascript-reference.md#microsofttimewindow)
46-
Recurring Time Window | [GA](./feature-management-dotnet-reference.md#microsofttimewindow) | GA | WIP | WIP
47-
Custom Feature Filter | [GA](./feature-management-dotnet-reference.md#implementing-a-feature-filter) | GA | [GA](./feature-management-python-reference.md#implementing-a-feature-filter) | [GA](./feature-management-javascript-reference.md#implementing-a-feature-filter)
48-
Feature Filter Requirement Type (AND/OR) | [GA](./feature-management-dotnet-reference.md#requirement-type) | GA | [GA](./feature-management-python-reference.md#requirement-type) | [GA](./feature-management-javascript-reference.md#requirement-type)
49-
Variant Feature Flag | [GA](./feature-management-dotnet-reference.md#variants) | GA | [GA](./feature-management-python-reference.md#variants) | [GA](./feature-management-javascript-reference.md#variants)
50-
Feature Flag Telemetry | [GA](./feature-management-dotnet-reference.md#telemetry) | GA | [GA](./feature-management-python-reference.md#telemetry) | [GA](./feature-management-javascript-reference.md#telemetry)
51-
Application Insights Integration | [GA](./feature-management-dotnet-reference.md#application-insights-telemetry) | GA | [GA](./feature-management-python-reference.md#application-insights-telemetry) | [GA](./feature-management-javascript-reference.md#application-insights-integration)
52-
Feature Gate | [GA](./feature-management-dotnet-reference.md#controllers-and-actions) | GA | N/A | N/A
53-
Feature Gated Middleware | [GA](./feature-management-dotnet-reference.md#application-building) | GA | N/A | N/A
41+
Feature | .NET | Spring | Python | JavaScript | Go |
42+
------- | ---- | ------ | ------ | ---------- | -- |
43+
Targeting Filter | [GA](./feature-management-dotnet-reference.md#targeting) | GA | [GA](./feature-management-python-reference.md#targeting) | [GA](./feature-management-javascript-reference.md#targeting) | GA
44+
Targeting Exclusion | [GA](./feature-management-dotnet-reference.md#targeting-exclusion) | GA | [GA](./feature-management-python-reference.md#targeting-exclusion) | [GA](./feature-management-javascript-reference.md#targeting-exclusion) | GA
45+
Ambient Targeting | [GA](./feature-management-dotnet-reference.md#targeting-in-a-web-application) | WIP | WIP | [GA](./feature-management-javascript-reference.md#targeting-in-a-web-application) | WIP
46+
Time Window Filter | [GA](./feature-management-dotnet-reference.md#microsofttimewindow) | GA | [GA](./feature-management-python-reference.md#microsofttimewindow) | [GA](./feature-management-javascript-reference.md#microsofttimewindow) | GA
47+
Recurring Time Window | [GA](./feature-management-dotnet-reference.md#microsofttimewindow) | GA | WIP | WIP | WIP
48+
Custom Feature Filter | [GA](./feature-management-dotnet-reference.md#implementing-a-feature-filter) | GA | [GA](./feature-management-python-reference.md#implementing-a-feature-filter) | [GA](./feature-management-javascript-reference.md#implementing-a-feature-filter) | GA
49+
Feature Filter Requirement Type (AND/OR) | [GA](./feature-management-dotnet-reference.md#requirement-type) | GA | [GA](./feature-management-python-reference.md#requirement-type) | [GA](./feature-management-javascript-reference.md#requirement-type) | GA
50+
Variant Feature Flag | [GA](./feature-management-dotnet-reference.md#variants) | GA | [GA](./feature-management-python-reference.md#variants) | [GA](./feature-management-javascript-reference.md#variants) | WIP
51+
Feature Flag Telemetry | [GA](./feature-management-dotnet-reference.md#telemetry) | GA | [GA](./feature-management-python-reference.md#telemetry) | [GA](./feature-management-javascript-reference.md#telemetry) | WIP
52+
Application Insights Integration | [GA](./feature-management-dotnet-reference.md#application-insights-telemetry) | GA | [GA](./feature-management-python-reference.md#application-insights-telemetry) | [GA](./feature-management-javascript-reference.md#application-insights-integration) | WIP
53+
Feature Gate | [GA](./feature-management-dotnet-reference.md#controllers-and-actions) | GA | N/A | N/A | N/A
54+
Feature Gated Middleware | [GA](./feature-management-dotnet-reference.md#application-building) | GA | N/A | N/A | N/A
5455

5556
## Support policy
5657

0 commit comments

Comments
 (0)