Skip to content

Commit f0bdbaa

Browse files
authored
Merge branch 'MicrosoftDocs:main' into FirmwareAnalysis
2 parents 031c2a9 + 3c8b76c commit f0bdbaa

177 files changed

Lines changed: 5944 additions & 1540 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.openpublishing.redirection.json

Lines changed: 0 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -5375,51 +5375,6 @@
53755375
"redirect_url": "/azure/role-based-access-control/resource-provider-operations",
53765376
"redirect_document_id": false
53775377
},
5378-
{
5379-
"source_path_from_root": "/articles/scheduler/get-started-portal.md",
5380-
"redirect_url": "/azure/scheduler/migrate-from-scheduler-to-logic-apps",
5381-
"redirect_document_id": false
5382-
},
5383-
{
5384-
"source_path_from_root": "/articles/scheduler/scheduler-advanced-complexity.md",
5385-
"redirect_url": "/azure/scheduler/migrate-from-scheduler-to-logic-apps",
5386-
"redirect_document_id": false
5387-
},
5388-
{
5389-
"source_path_from_root": "/articles/scheduler/scheduler-concepts-terms.md",
5390-
"redirect_url": "/azure/scheduler/migrate-from-scheduler-to-logic-apps",
5391-
"redirect_document_id": false
5392-
},
5393-
{
5394-
"source_path_from_root": "/articles/scheduler/scheduler-high-availability-reliability.md",
5395-
"redirect_url": "/azure/scheduler/migrate-from-scheduler-to-logic-apps",
5396-
"redirect_document_id": false
5397-
},
5398-
{
5399-
"source_path_from_root": "/articles/scheduler/scheduler-intro.md",
5400-
"redirect_url": "/azure/scheduler/migrate-from-scheduler-to-logic-apps",
5401-
"redirect_document_id": false
5402-
},
5403-
{
5404-
"source_path_from_root": "/articles/scheduler/scheduler-limits-defaults-errors.md",
5405-
"redirect_url": "/azure/scheduler/migrate-from-scheduler-to-logic-apps",
5406-
"redirect_document_id": false
5407-
},
5408-
{
5409-
"source_path_from_root": "/articles/scheduler/scheduler-outbound-authentication.md",
5410-
"redirect_url": "/azure/scheduler/migrate-from-scheduler-to-logic-apps",
5411-
"redirect_document_id": false
5412-
},
5413-
{
5414-
"source_path_from_root": "/articles/scheduler/scheduler-plans-billing.md",
5415-
"redirect_url": "/azure/scheduler/migrate-from-scheduler-to-logic-apps",
5416-
"redirect_document_id": false
5417-
},
5418-
{
5419-
"source_path_from_root": "/articles/scheduler/scheduler-powershell-reference.md",
5420-
"redirect_url": "/azure/scheduler/migrate-from-scheduler-to-logic-apps",
5421-
"redirect_document_id": false
5422-
},
54235378
{
54245379
"source_path_from_root": "/articles/sdks/index.yml",
54255380
"redirect_url": "https://azure.microsoft.com/downloads/",
Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
---
2+
title: Industry-wide certificate changes impacting Azure App Service
3+
description: Describes industry-wide TLS certificate changes that affect Azure App Service Managed Certificates and App Service Certificates, including scope, timelines, and required actions.
4+
author: msangapu-msft
5+
ms.author: msangapu
6+
ms.date: 02/03/2026
7+
ms.topic: conceptual
8+
ms.service: azure-app-service
9+
---
10+
11+
# Industry-wide certificate changes impacting Azure App Service
12+
13+
Industry-wide requirements defined by browser programs and the CA/Browser Forum (CA/B Forum) are changing how public TLS certificates are issued and validated. To remain compliant with these requirements, Azure App Service applies the changes to App Service Managed Certificates (ASMC) and App Service Certificates (ASC).
14+
15+
Most customers using certificates within Azure App Service do not need to take action. However, certain scenarios may require customer action to avoid service disruption or may change how certificates are managed over time. This article explains what is changing, when action is required, and what operational impacts to expect.
16+
17+
18+
## Scope
19+
20+
This article applies to:
21+
- App Service Managed Certificates (ASMC)
22+
- App Service Certificates (ASC)
23+
24+
## When action is required
25+
Action is required **only** in the following scenarios to avoid service disruption:
26+
27+
- **Certificate pinning**
28+
Apps that pin certificates or certificate chains must review and remove pinning before the certificate chain migration.
29+
30+
- **Mutual TLS (mTLS)**
31+
Apps that rely on these certificates for client authentication must transition to an alternative authentication mechanism.
32+
33+
If neither of these scenarios applies, no immediate action is required.
34+
35+
## Operational changes to be aware of
36+
37+
Some scenarios do not require immediate action, but may require changes to how you manage certificates over time:
38+
39+
- **Exporting App Service Certificates**
40+
If you export certificates for use outside Azure App Service, you may need to re-export and update them more frequently due to the shortened validity period.
41+
42+
- **Domain ownership validation (ASC only)**
43+
Domain ownership validation may be required more frequently for certificate issuance, renewals, or rekeys.
44+
45+
46+
## Quick reference: What’s changing
47+
48+
| Change area | Affected certificate type | Customer impact |
49+
|------------|--------------------------|-----------------|
50+
| Certificate validity period | ASC only | Shorter validity with overlapping issuance |
51+
| Domain validation reuse | ASC only | More frequent domain validation required |
52+
| Certificate chain | ASMC and ASC | Certificate pinning must be removed |
53+
| Client authentication EKU | ASMC and ASC | mTLS using these certs no longer supported |
54+
55+
## Certificate validity period (ASC only)
56+
57+
### What’s changing
58+
Starting March 2026, App Service Certificates are issued with a shorter validity period of **198 days** to remain compliant with industry requirements defined by the CA/Browser Forum, including the schedule introduced in
59+
[CA/Browser Forum Ballot SC‑081v3](https://cabforum.org/2025/04/11/ballot-sc081v3-introduce-schedule-of-reducing-validity-and-data-reuse-periods/).
60+
61+
### Impact on App Service Managed Certificates (ASMC)
62+
No change. ASMCs already comply with the new industry requirements.
63+
64+
### Impact on App Service Certificates (ASC)
65+
To maintain one year of certificate coverage, Azure App Service automatically issues overlapping certificates at no additional cost.
66+
67+
- If App Service Certificates are used only with Azure App Service, no action is required. The platform automatically syncs and updates certificates.
68+
- If certificates are exported and used outside Azure App Service, the certificates may need to be re-exported more frequently due to the shorter validity period.
69+
70+
71+
## Domain validation reuse (ASC only)
72+
73+
### What’s changing
74+
Starting March 2026, domain ownership validation for App Service Certificates can be reused for up to **198 days** to remain compliant with industry requirements defined by the CA/Browser Forum.
75+
76+
### Impact on App Service Managed Certificates (ASMC)
77+
No change. Domain ownership validation for ASMC is automated and requires no customer action.
78+
79+
### Impact on App Service Certificates (ASC)
80+
- Domain validation completed before March 2026 cannot be reused. Certificate issuance starting March 2026 requires domain ownership validation.
81+
- During March 2026, domain ownership validation might be required again for each renewal and rekey.
82+
- After March 2026, domain ownership must be revalidated only if the domain was not validated within the past 198 days.
83+
- App Service Certificates do not automatically revalidate domains.
84+
85+
If validation is required, certificate orders remain in a pending issuance state until validation is completed.
86+
87+
> [!IMPORTANT]
88+
> Failure to complete domain validation can result in certificate issuance or renewal failure, potentially leading to certificate expiration and service disruption.
89+
90+
## Client authentication EKU (ASMC and ASC)
91+
92+
App Service Managed Certificates and App Service Certificates will stop supporting the client authentication extended key usage (EKU) as part of industry-driven changes to public TLS certificates.
93+
94+
For background on this change across Azure services, see [Changes to the Managed TLS feature](/azure/security/fundamentals/managed-tls-changes).
95+
96+
> [!NOTE]
97+
> Apps that rely on these certificates for mutual TLS (mTLS) must transition to an alternative authentication mechanism before the migration dates.
98+
99+
100+
## Certificate chain changes (ASMC and ASC)
101+
102+
Both App Service Managed Certificates and App Service Certificates will migrate to a new certificate chain as part of industry-driven updates to TLS certificates, which includes changes to certificate authorities and intermediates.
103+
104+
Apps that pin certificates or certificate chains must review and remove pinning before the migration dates to avoid service disruption.
105+
106+
For background on the managed TLS certificate authority changes across Azure services, see [Changes to the Managed TLS feature](/azure/security/fundamentals/managed-tls-changes).
107+
108+
> [!NOTE]
109+
> Certificate pinning is not recommended for App Service Managed Certificates (ASMC), because certificate issuance and rotation are controlled by the service.
110+
> For App Service Certificates (ASC), pinning may also break due to certificate chain changes and should be reviewed carefully before the migration.
111+
112+
## Timeline of key dates
113+
114+
| Date | Change | ASMC | ASC |
115+
|-----|--------|------|-----|
116+
| Feb–Mar 2026 | New certificate chain | Migrates to new chain ||
117+
| Starting March 2026 | Validity period + validation reuse || Shortened validity and validation reuse |
118+
| Mar–Apr 2026 (TBD) | New certificate chain + Client auth EKU || Migrates to new chain; EKU removed |
119+
| Mar–Apr 2026 (TBD) | Client auth EKU | EKU removed ||
120+
121+
122+
## Frequently asked questions
123+
124+
### Will I lose certificate coverage due to the shorter validity period?
125+
No. For App Service Certificates, Azure App Service automatically issues overlapping certificates to maintain continuous coverage for the full term you purchased.
126+
127+
### Are these changes specific to DigiCert or GoDaddy?
128+
No. These are industry-wide changes driven by browser programs and the CA/Browser Forum, and they apply to public TLS certificates issued by all certificate authorities.
129+
130+
### Do these changes affect certificates from other certificate authorities?
131+
Yes. These are industry-wide changes that apply to public TLS certificates regardless of the issuing certificate authority. For certificates not managed by Azure App Service, contact your certificate authority for guidance.
132+
133+
### Do I need to take action now?
134+
If you do not pin certificates and do not use these certificates for mutual TLS (mTLS), no immediate action is required.
135+
136+
### Why does my App Service Managed Certificate show an expiration date in April 2026 even though it was renewed recently?
137+
App Service Managed Certificates are issued with an approximately six-month validity period, which already complies with current industry requirements.
138+
139+
The April 2026 expiration date is not related to certificate validity changes. It reflects a certificate chain transition that is occurring across the industry to maintain browser trust.
140+
141+
Certificates issued from the existing certificate chain can only be issued until April 2026. To address this, Azure App Service is migrating App Service Managed Certificates to a new certificate chain and reissuing certificates from that chain.
142+
143+
For customers using App Service Managed Certificates as intended, this process is fully automated and no service disruption is expected. As a best practice, App Service Managed Certificates should not be pinned, because both the certificate and its issuing chain are managed and rotated by the platform.
144+
145+
146+
## Related documentation
147+
148+
- App Service Managed Certificates
149+
- App Service Certificates
150+
- Configure TLS/SSL bindings in Azure App Service

articles/app-service/toc.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,9 @@ items:
352352
- name: Configure TLS mutual authentication
353353
href: app-service-web-configure-tls-mutual-auth.md
354354
displayName: TLS
355+
- name: Industry-wide certificate changes
356+
href: industry-wide-certificate-changes.md
357+
displayName: 2026 certificate changes
355358
- name: Database and service connection
356359
items:
357360
- name: Connectivity scenarios overview

articles/application-gateway/ssl-overview.md

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ services: application-gateway
55
author: mbender-ms
66
ms.service: azure-application-gateway
77
ms.topic: concept-article
8-
ms.date: 10/09/2025
8+
ms.date: 02/16/2026
99
ms.author: mbender
1010

1111
# Customer intent: "As a cloud architect, I want to configure end to end TLS on the application gateway, so that I can ensure secure communication and compliance for sensitive data transmitted between clients and backend servers."
@@ -125,10 +125,22 @@ The following tables outline the differences in SNI between the v1 and v2 SKU in
125125
| --- | --- | --- |
126126
| If the client specifies SNI header and all the multi-site listeners are enabled with "Require SNI" flag | Returns the appropriate certificate and if the site doesn't exist (according to the server_name), then the connection is reset. | Returns appropriate certificate if available, otherwise, returns the certificate of the first HTTPS listener according to the order specified by the request routing rules associated with the HTTPS listeners|
127127
| If the client doesn't specify a SNI header and if all the multi-site headers are enabled with "Require SNI" | Resets the connection | Returns the certificate of the first HTTPS listener according to the order specified by the request routing rules associated with the HTTPS listeners
128-
| If the client doesn't specify SNI header and if there's a basic listener configured with a certificate | Returns the certificate configured in the basic listener to the client (default or fallback certificate) | Returns the certificate configured in the basic listener |
128+
| If the client doesn't specify SNI header and if there's a basic listener configured with a certificate | Returns the certificate configured in the basic listener to the client (default or fallback certificate) | Returns the certificate of the HTTPS listener with the highest priority routing rule. The basic listener certificate is **not** used as a fallback. |
129+
130+
> [!IMPORTANT]
131+
> **V2 SKU default certificate behavior:** When a client connects without an SNI header (for example, using an IP address), Application Gateway V2 does **not** fall back to a basic listener's certificate. Instead, it always returns the certificate from the HTTPS listener whose associated request routing rule has the **highest priority** (lowest priority number). This behavior differs from the V1 SKU, which returns the basic listener's certificate as a fallback.
132+
133+
> [!TIP]
134+
> **Controlling the default certificate with an SNI hole:** To prevent Application Gateway V2 from exposing a production site certificate when clients connect by IP address without SNI, you can configure an "SNI hole":
135+
>
136+
> 1. Create a **multi-site HTTPS listener** with a dummy hostname that doesn't match any real site (for example, `sni-hole.invalid`).
137+
> 2. Upload a **self-signed certificate** to this listener.
138+
> 3. Create a **request routing rule** associated with this listener and assign it the **highest priority** (lowest priority number) among all your rules.
139+
>
140+
> With this configuration, any connection without a matching SNI header receives the self-signed certificate instead of a valid site certificate. This prevents IP-only connections from obtaining information about your hosted sites.
129141
130142
> [!NOTE]
131-
> When the client does not specify an SNI header, it is recommended that the user add a basic listener and rule to present a default SSL/TLS certificate.
143+
> For the V1 SKU, when the client doesn't specify an SNI header, it's recommended that the user add a basic listener and rule to present a default SSL/TLS certificate.
132144
133145
> [!TIP]
134146
> The SNI flag can be configured with PowerShell or by using an ARM template. For more information, see [RequireServerNameIndication](/powershell/module/az.network/set-azapplicationgatewayhttplistener#-requireservernameindication) and [Quickstart: Direct web traffic with Azure Application Gateway - ARM template](quick-create-template.md#review-the-template).
@@ -140,7 +152,7 @@ The following tables outline the differences in SNI between the v1 and v2 SKU in
140152

141153
|Scenario | v1 | v2 |
142154
| --- | --- | --- |
143-
| When an FQDN or SNI is configured | Set as FQDN from the backend pool. As per [RFC 6066](https://tools.ietf.org/html/rfc6066), literal IPv4 and IPv6 addresses aren't permitted in SNI hostname. | The SNI value is set based on the [TLS validation type](configuration-http-settings.md?tabs=backendhttpsettings#backend-https-validation-settings) in the Backend Settings.<br><br> 1. **Complete validation** – The probes uses the SNI in the following order of precedence:<br> a) Custom Health Probe's hostname <br> b) Backend Setting's hostname (as per Overridden value or Pick from backend server) <br><br> 2. **Configurable** <br> Use specific SNI: The probes use this fixed hostname for validation.<br> Skip SNI: No Subject Name validation.
155+
| When an FQDN or SNI is configured | Set as FQDN from the backend pool. As per [RFC 6066](https://tools.ietf.org/html/rfc6066), literal IPv4 and IPv6 addresses aren't permitted in SNI hostname. | The SNI value is set based on the [TLS validation type](configuration-http-settings.md?tabs=backendhttpsettings#backend-https-validation-settings) in the Backend Settings.<br><br> 1. **Complete validation** – The probe uses the SNI in the following order of precedence:<br> a) Custom Health Probe's hostname <br> b) Backend Setting's hostname (as per Overridden value or Pick from backend server) <br><br> 2. **Configurable** <br> Use specific SNI: The probes use this fixed hostname for validation.<br> Skip SNI: No Subject Name validation.
144156
| When an FQDN or SNI is NOT configured (only IP address is available) | SNI (server_name) won’t be set. <br> **Note:** In this case, the backend server should be able to return a default/fallback certificate and this should be allow-listed in HTTP settings under authentication certificate. If there’s no default/fallback certificate configured in the backend server and SNI is expected, the server might reset the connection and will lead to probe failures | If the Custom Probe or Backend Settings use an IP address in the hostname field, the SNI is not set, in accordance with [RFC 6066](https://tools.ietf.org/html/rfc6066). This includes cases where the default probe uses 127.0.0.1. |
145157

146158
#### For live traffic

articles/azure-functions/durable/durable-functions-orchestrations.md

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -408,27 +408,37 @@ It isn't possible to pass multiple parameters to an activity function directly.
408408

409409
# [C# (InProc)](#tab/csharp-inproc)
410410

411-
In .NET, you can also use [ValueTuple](/dotnet/csharp/language-reference/builtin-types/value-tuples) objects to pass multiple parameters. The following sample uses [ValueTuple](/dotnet/csharp/language-reference/builtin-types/value-tuples) features added with [C# 7](/dotnet/csharp/whats-new/csharp-version-history#c-version-70):
411+
In .NET, you can use a class to pass multiple parameters:
412412

413413
```csharp
414+
public class CourseInfo
415+
{
416+
public string Major { get; set; }
417+
public int UniversityYear { get; set; }
418+
}
419+
414420
[FunctionName("GetCourseRecommendations")]
415421
public static async Task<object> RunOrchestrator(
416422
[OrchestrationTrigger] IDurableOrchestrationContext context)
417423
{
418-
string major = "ComputerScience";
419424
int universityYear = context.GetInput<int>();
425+
CourseInfo courseInfo = new CourseInfo
426+
{
427+
Major = "ComputerScience",
428+
UniversityYear = universityYear
429+
};
420430

421431
object courseRecommendations = await context.CallActivityAsync<object>(
422432
"CourseRecommendations",
423-
(major, universityYear));
433+
courseInfo);
424434
return courseRecommendations;
425435
}
426436

427437
[FunctionName("CourseRecommendations")]
428438
public static async Task<object> Mapper([ActivityTrigger] IDurableActivityContext inputs)
429439
{
430440
// Parse the input for the student's major and year in university.
431-
(string Major, int UniversityYear) studentInfo = inputs.GetInput<(string, int)>();
441+
CourseInfo studentInfo = inputs.GetInput<CourseInfo>();
432442

433443
// Retrieve and return course recommendations by major and university year.
434444
return new

0 commit comments

Comments
 (0)