Skip to content

Commit b8c2427

Browse files
Merge pull request #311912 from MicrosoftDocs/main
Auto Publish – main to live - 2026-02-17 23:00 UTC
2 parents bd21c66 + 3c8b76c commit b8c2427

50 files changed

Lines changed: 1000 additions & 729 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/communication-services/concepts/voice-video-calling/call-recording.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,13 @@ Call Recording supports multiple media outputs and content types to address your
5151
5252

5353
## Get full control over your recordings with our Call Recording APIs
54-
You can use Call Recording APIs to manage recording via internal business logic triggers, such as an application creating a group call and recording the conversation. Also, recordings can be triggered by a user action that tells the server application to start recording. Call Recording APIs use exclusively the `serverCallId` to initiate recording. To learn how to get the `serverCallId`, check our [Call Recording Quickstart](../../quickstarts/voice-video-calling/get-started-call-recording.md).
54+
You can use Call Recording APIs to manage recording via internal business logic triggers, such as an application creating a group call and recording the conversation. Also, recordings can be triggered by a user action that tells the server application to start recording. To initiate a recording, Call Recording APIs can use the `callConnectionId` (preferred) or the `serverCallId` when the callConnectionId is not available. To learn how to get the `callConnectionId` or `serverCallId`, check our [Call Recording Quickstart](../../quickstarts/voice-video-calling/get-started-call-recording.md).
5555
A `recordingId` is returned when recording is started, which can then be used for follow-on operations like pause and resume.
5656

5757

5858
| Operation | Operates On | Comments |
5959
| :-------------------- | :--------------------- | :----------------------------- |
60-
| Start Recording | `serverCallId` | Returns `recordingId` |
60+
| Start Recording | `callConnectionId` or `serverCallId` | Returns `recordingId` |
6161
| Get Recording State | `recordingId` | Returns `RecordingStateResult` |
6262
| Pause Recording | `recordingId` | Pausing and resuming call recording enables you to skip recording a portion of a call or meeting, and resume recording to a single file. |
6363
| Resume Recording | `recordingId` | Resumes a Paused recording operation. Content is included in the same file as content from prior to pausing. |
@@ -149,6 +149,9 @@ Many countries/regions and states have laws and regulations that apply to call r
149149

150150
Regulations around the maintenance of personal data require the ability to export user data. In order to support these requirements, recording metadata files include the `participantId` for each call participant in the `participants` array. You can cross-reference the Azure Communication Services User Identity in the `participants` array with your internal user identities to identify participants in a call.
151151

152+
## Known Issues ##
153+
In rare High Availability or Disaster Recovery (HADR) scenarios, a single call recording session may produce multiple recording files that share the same `recordingId` and `chunkId`. In these cases, `StopCallRecording` may return `404 Recording not found` even though recording files are successfully delivered via `RecordingFileStatusUpdated` events. Applications should correlate recordings using `serverCallId` and not assume a one‑to‑one relationship between calls, recording IDs, chunk IDs, and output files.
154+
152155
## Next steps
153156

154157
> [!div class="nextstepaction"]

articles/communication-services/quickstarts/voice-video-calling/includes/call-recording-samples/call-recording-csharp.md

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,20 @@ You can download the sample app from [GitHub](https://github.com/Azure-Samples/c
2020

2121
## Before you start
2222

23-
Call Recording APIs use exclusively the `serverCallId`to initiate recording. There are a couple of methods you can use to fetch the `serverCallId` depending on your scenario:
23+
Call Recording APIs use the `callConnectionId` or `serverCallId`to initiate recording. There are a couple of methods you can use to fetch the these IDs depending on your scenario:
2424

25-
### Call Automation scenarios
25+
### How to fetch callConnectionId
26+
27+
When using [Call Automation](../../../call-automation/callflows-for-customer-interactions.md), you will receive the `callConnectionId` from the response event from a `createCall`, `answer`, or `connect` requests when initiating the call.
28+
29+
### How to fetch serverCallId
2630

2731
When using [Call Automation](../../../call-automation/callflows-for-customer-interactions.md), you have two options to get the `serverCallId`:
2832

2933
1. When you establish a call, it returns a `serverCallId` as a property of the `CallConnected` event after a call is established. Learn how to [Get CallConnected event](../../../call-automation/callflows-for-customer-interactions.md?pivots=programming-language-csharp#update-programcs) from Call Automation SDK.
3034

3135
2. When you answer the call or a call is created, it returns the `serverCallId` as a property of the `AnswerCallResult` or `CreateCallResult` API responses respectively.
3236

33-
### Calling SDK scenarios
3437

3538
When using [Calling Client SDK](../../get-started-with-video-calling.md), you can retrieve the `serverCallId` by using the `getServerCallId` method on the call.
3639
Use this example to learn how to [Get serverCallId](../../get-server-call-id.md) from the Calling Client SDK.
@@ -49,13 +52,13 @@ CallAutomationClient callAutomationClient = new CallAutomationClient("<ACSConnec
4952

5053
## 2. Start recording session with StartRecordingOptions using 'StartAsync' API
5154

52-
Use the `serverCallId` received during initiation of the call.
55+
Use the `callConnectionId` or `serverCallId` received during initiation of the call.
5356
- Use `RecordingContent` to pass the recording content type. Use `AUDIO`.
5457
- Use `RecordingChannel` to pass the recording channel type. Use `MIXED` or `UNMIXED`.
5558
- Use `RecordingFormat` to pass the format of the recording. Use `WAV`.
5659

5760
```csharp
58-
StartRecordingOptions recordingOptions = new StartRecordingOptions(new ServerCallLocator("<ServerCallId>"))
61+
StartRecordingOptions recordingOptions = new StartRecordingOptions(new ServerCallLocator("<callConnectionId> or <ServerCallId>"))
5962
{
6063
RecordingContent = RecordingContent.Audio,
6164
RecordingChannel = RecordingChannel.Unmixed,
@@ -70,7 +73,7 @@ Response<RecordingStateResult> response = await callAutomationClient.GetCallReco
7073
Start recording using your designated Azure Blob Storage to store the recorded file once recording is complete.
7174

7275
```csharp
73-
StartRecordingOptions recordingOptions = new StartRecordingOptions(new ServerCallLocator("<ServerCallId>"))
76+
StartRecordingOptions recordingOptions = new StartRecordingOptions(new ServerCallLocator("<CallConnectionId> or <ServerCallId>"))
7477
{
7578
RecordingContent = RecordingContent.Audio,
7679
RecordingChannel = RecordingChannel.Unmixed,
@@ -88,7 +91,7 @@ Response<RecordingStateResult> response = await callAutomationClient.GetCallReco
8891
> **Recordings will need to be resumed for recording file to be generated.**
8992
9093
```csharp
91-
StartRecordingOptions recordingOptions = new StartRecordingOptions(new ServerCallLocator("<ServerCallId>"))
94+
StartRecordingOptions recordingOptions = new StartRecordingOptions(new ServerCallLocator("<CallConnectionId> or <ServerCallId>"))
9295
{
9396
RecordingContent = RecordingContent.Audio,
9497
RecordingChannel = RecordingChannel.Unmixed,
@@ -105,7 +108,7 @@ Response<RecordingStateResult> response = await callAutomationClient.GetCallReco
105108
To produce unmixed audio recording files, you can use the `AudioChannelParticipantOrdering` functionality to specify which user you want to record on channel 0. The rest of the participants are assigned to a channel as they speak. If you use `RecordingChannel.Unmixed` but don't use `AudioChannelParticipantOrdering`, Call Recording assigns channel 0 to the first participant speaking.
106109

107110
```csharp
108-
StartRecordingOptions recordingOptions = new StartRecordingOptions(new ServerCallLocator("<ServerCallId>"))
111+
StartRecordingOptions recordingOptions = new StartRecordingOptions(new ServerCallLocator("<CallConnectionId> or <ServerCallId>"))
109112
{
110113
RecordingContent = RecordingContent.Audio,
111114
RecordingChannel = RecordingChannel.Unmixed,
@@ -121,7 +124,7 @@ Response<RecordingStateResult> response = await callAutomationClient.GetCallReco
121124

122125
```csharp
123126
var channelAffinity = new ChannelAffinity(new CommunicationUserIdentifier("<ACS_USER_MRI>")) { Channel = 0};
124-
StartRecordingOptions recordingOptions = new StartRecordingOptions(new ServerCallLocator("<ServerCallId>"))
127+
StartRecordingOptions recordingOptions = new StartRecordingOptions(new ServerCallLocator("<CallConnectionId> or <ServerCallId>"))
125128
{
126129
RecordingContent = RecordingContent.Audio,
127130
RecordingChannel = RecordingChannel.Unmixed,

0 commit comments

Comments
 (0)