Skip to content

Commit 33a22b9

Browse files
Merge branch 'MicrosoftDocs:main' into geo-replication-pre-ga
2 parents 4ef69aa + 3909e5a commit 33a22b9

12 files changed

+138
-64
lines changed

articles/application-gateway/mutual-authentication-troubleshooting.md

Lines changed: 56 additions & 31 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: troubleshooting
8-
ms.date: 02/18/2022
8+
ms.date: 07/09/2025
99
ms.author: mbender
1010
# Customer intent: As an application administrator, I want to troubleshoot mutual authentication issues on the Application Gateway, so that I can ensure secure communication and resolve errors efficiently.
1111
---
@@ -16,17 +16,19 @@ Learn how to troubleshoot problems with mutual authentication when using Applica
1616

1717
## Overview
1818

19-
After configuring mutual authentication on an Application Gateway, there can be a number of errors that appear when trying to use mutual authentication. Some common causes for errors include:
19+
For mutual authentication on an Application Gateway, various errors can occur during client certificate validation after configuring. Common causes for these errors include:
2020

21-
* Uploaded a certificate or certificate chain without a root CA certificate
22-
* Uploaded a certificate chain with multiple root CA certificates
23-
* Uploaded a certificate chain that only contained a leaf certificate without a CA certificate
24-
* Validation errors due to issuer DN mismatch
21+
* Upload a certificate or certificate chain without a root CA certificate
22+
* Upload a certificate chain with multiple root CA certificates
23+
* Upload a certificate chain that contains only a leaf certificate without a CA certificate
24+
* Certificate validation errors due to issuer Distinguished Name (DN) mismatch
25+
* Missing or incorrect Extended Key Usage (EKU) attributes
2526

26-
We'll go through different scenarios that you might run into and how to troubleshoot those scenarios. We'll then address error codes and explain likely causes for certain error codes you might be seeing with mutual authentication. All client certificate authentication failures should result in an HTTP 400 error code.
27+
This guide covers different scenarios you might encounter and provides troubleshooting steps for each. We also address specific error codes and explain their likely causes in mutual authentication scenarios. All client certificate authentication failures result in an HTTP 400 (Bad Request) status code being returned to the client.
2728

2829
## Scenario troubleshooting - configuration problems
29-
There are a few scenarios that you might be facing when trying to configure mutual authentication. We'll walk through how to troubleshoot some of the most common pitfalls.
30+
31+
The following scenarios address common configuration issues that can occur when setting up mutual authentication. Each scenario includes the problem description and recommended solution.
3032

3133
### Self-signed certificate
3234

@@ -36,65 +38,81 @@ The client certificate you uploaded is a self-signed certificate and is resultin
3638

3739
#### Solution
3840

39-
Double check that the self-signed certificate that you're using has the extension *BasicConstraintsOid* = "2.5.29.19" which indicates the subject can act as a CA. This will ensure that the certificate used is a CA certificate. For more information about how to generate self-signed client certificates, check out [trusted client certificates](./mutual-authentication-certificate-management.md).
41+
Verify that the self-signed certificate you're using includes the *BasicConstraintsOid* extension with value "2.5.29.19" and the CA flag set to TRUE. This extension indicates that the certificate subject can act as a Certificate Authority.
42+
43+
To check the certificate properties, you can use the following OpenSSL command:
44+
```bash
45+
openssl x509 -in certificate.pem -text -noout
46+
```
47+
48+
Look for the "Basic Constraints" section in the output, which should show "CA:TRUE" for a valid CA certificate. For detailed guidance on generating self-signed client certificates, see [trusted client certificates](./mutual-authentication-certificate-management.md).
4049

4150
## Scenario troubleshooting - connectivity problems
4251

43-
You might have been able to configure mutual authentication without any problems but you're running into problems when sending requests to your Application Gateway. We address some common problems and solutions in the following section. You can find the *sslClientVerify* property in the access logs of your Application Gateway.
52+
You might be able to configure mutual authentication without any problems but you're running into problems when sending requests to your Application Gateway. We address some common problems and solutions in the following section. You can find the *sslClientVerify* property in the access logs of your Application Gateway.
4453

4554
### SslClientVerify is NONE
4655

4756
#### Problem
4857

49-
The property *sslClientVerify* is appearing as "NONE" in your access logs.
58+
The *sslClientVerify* property appears as "NONE" in your access logs, indicating that no client certificate was presented during the TLS handshake.
5059

5160
#### Solution
5261

53-
This is seen when the client doesn't send a client certificate when sending a request to the Application Gateway. This could happen if the client sending the request to the Application Gateway isn't configured correctly to use client certificates. One way to verify that the client authentication setup on Application Gateway is working as expected is through the following OpenSSL command:
62+
This problem occurs when the client doesn't send a client certificate in the TLS handshake request to the Application Gateway. This problem can happen when:
63+
- The client application isn't configured to use client certificates
64+
- The client certificate isn't properly installed or accessible
65+
- The client doesn't trust the Application Gateway's server certificate
66+
67+
To verify that client authentication is configured correctly on Application Gateway, use the following OpenSSL command:
5468

5569
```
5670
openssl s_client -connect <hostname:port> -cert <path-to-certificate> -key <client-private-key-file>
5771
```
5872

59-
The `-cert` flag is the leaf certificate, the `-key` flag is the client private key file.
73+
Where:
74+
- `-cert` specifies the path to the client certificate (leaf certificate)
75+
- `-key` specifies the path to the client private key file
76+
- `-verify_return_error` ensures the command fails if certificate verification fails
6077

61-
For more information on how to use the OpenSSL `s_client` command, check out their [manual page](https://www.openssl.org/docs/manmaster/man1/openssl-s_client.html).
78+
For more information on using the OpenSSL `s_client` command, see the [OpenSSL manual page](https://www.openssl.org/docs/manmaster/man1/openssl-s_client.html).
6279

6380
### SslClientVerify is FAILED
6481

6582
#### Problem
6683

67-
The property *sslClientVerify* is appearing as "FAILED" in your access logs.
84+
The *sslClientVerify* property appears as "FAILED" in your access logs, indicating that the client certificate validation failed during the TLS handshake.
6885

6986
#### Solution
7087

71-
There are a number of potential causes for failures in the access logs. Below is a list of common causes for failure:
72-
* **Unable to get issuer certificate:** The issuer certificate of the client certificate couldn't be found. This normally means the trusted client CA certificate chain is not complete on the Application Gateway. Validate that the trusted client CA certificate chain uploaded on the Application Gateway is complete.
73-
* **Unable to get local issuer certificate:** Similar to unable to get issuer certificate, the issuer certificate of the client certificate couldn't be found. This normally means the trusted client CA certificate chain is not complete on the Application Gateway. Validate that the trusted client CA certificate chain uploaded on the Application Gateway is complete.
74-
* **Unable to verify the first certificate:** Unable to verify the client certificate. This error occurs specifically when the client presents only the leaf certificate, whose issuer is not trusted. Validate that the trusted client CA certificate chain uploaded on the Application Gateway is complete.
75-
* **Unable to verify the client certificate issuer:** This error occurs when the configuration *VerifyClientCertIssuerDN* is set to true. This typically happens when the Issuer DN of the client certificate doesn't match the *ClientCertificateIssuerDN* extracted from the trusted client CA certificate chain uploaded by the customer. For more information about how Application Gateway extracts the *ClientCertificateIssuerDN*, check out [Application Gateway extracting issuer DN](./mutual-authentication-overview.md#verify-client-certificate-dn). As best practice, make sure you're uploading one certificate chain per file to Application Gateway.
88+
There are many potential causes for failures in the access logs. Here's a list of common causes for failure:
89+
* **Unable to get issuer certificate:** The issuer certificate of the client certificate couldn't be found. This issue normally means the trusted client CA certificate chain isn't complete on the Application Gateway. Validate that the trusted client CA certificate chain uploaded on the Application Gateway is complete.
90+
* **Unable to get local issuer certificate:** Similar to unable to get issuer certificate, the issuer certificate of the client certificate couldn't be found. This issue normally means the trusted client CA certificate chain isn't complete on the Application Gateway. Validate that the trusted client CA certificate chain uploaded on the Application Gateway is complete.
91+
* **Unable to verify the first certificate:** Unable to verify the client certificate. This error occurs specifically when the client presents only the leaf certificate, whose issuer isn't trusted. Validate that the trusted client CA certificate chain uploaded on the Application Gateway is complete.
92+
* **Unable to verify the client certificate issuer:** This error occurs when the configuration *VerifyClientCertIssuerDN* is set to true. This error typically happens when the Issuer DN of the client certificate doesn't match the *ClientCertificateIssuerDN* extracted from the trusted client CA certificate chain uploaded by the customer. For more information about how Application Gateway extracts the *ClientCertificateIssuerDN*, check out [Application Gateway extracting issuer DN](./mutual-authentication-overview.md#verify-client-certificate-dn). As best practice, make sure you're uploading one certificate chain per file to Application Gateway.
7693
* **Unsupported certificate purpose:** Ensure the client certificate designates Extended Key Usage for Client Authentication ([1.3.6.1.5.5.7.3.2](https://oidref.com/1.3.6.1.5.5.7.3.2)). More details on definition of extended key usage and object identifier for client authentication can be found in [RFC 3280](https://www.rfc-editor.org/rfc/rfc3280) and [RFC 5280](https://www.rfc-editor.org/rfc/rfc5280).
7794

7895
For more information on how to extract the entire trusted client CA certificate chain to upload to Application Gateway, see [how to extract trusted client CA certificate chains](./mutual-authentication-certificate-management.md).
7996

8097
## Error code troubleshooting
81-
If you're seeing any of the following error codes, we have a few recommended solutions to help resolve the problem you might be facing.
98+
99+
The following error codes appear when configuring mutual authentication. Each error includes the likely cause and recommended solution.
82100

83101
### Error code: ApplicationGatewayTrustedClientCertificateMustSpecifyData
84102

85103
#### Cause
86104

87-
There is certificate data that is missing. The certificate uploaded could have been an empty file without any certificate data.
105+
The uploaded certificate file is missing certificate data or contains an empty file without valid certificate content.
88106

89107
#### Solution
90108

91-
Validate that the certificate file uploaded doesn't have any missing data.
109+
Verify that the certificate file contains valid certificate data in the correct format (PEM). Use a text editor to confirm that the file contains certificate content between the `-----BEGIN CERTIFICATE-----` and `-----END CERTIFICATE-----` delimiters.
92110

93111
### Error code: ApplicationGatewayTrustedClientCertificateMustNotHavePrivateKey
94112

95113
#### Cause
96114

97-
There is a private key in the certificate chain. There shouldn't be a private key in the certificate chain.
115+
There's a private key in the certificate chain. There shouldn't be a private key in the certificate chain.
98116

99117
#### Solution
100118

@@ -104,15 +122,15 @@ Double check the certificate chain that was uploaded and remove the private key
104122

105123
#### Cause
106124

107-
There are two potential causes behind this error code.
108-
1. The parsing failed due to the chain not being presented in the right format. Application Gateway expects a certificate chain to be in PEM format and also expects individual certificate data to be delimited.
109-
2. The parser didn't find anything to parse. The file uploaded could potentially only have had the delimiters but no certificate data.
125+
There are two potential causes for this error:
126+
* **Parsing failure:** The certificate chain isn't in the correct format. Application Gateway expects certificate chains in PEM format with properly delimited individual certificates.
127+
* **Empty content:** The uploaded file contains only delimiters without actual certificate data between them.
110128

111129
#### Solution
112130

113-
Depending on the cause of this error, there are two potential solutions.
114-
* Validate that the certificate chain uploaded was in the right format (PEM) and that the certificate data was properly delimited.
115-
* Check that the certificate file uploaded contained the certificate data in addition to the delimiters.
131+
Based on the specific cause, apply one of the following solutions:
132+
* **Format issue:** Ensure the certificate chain is in PEM format with each certificate properly delimited by `-----BEGIN CERTIFICATE-----` and `-----END CERTIFICATE-----` markers. Each certificate should be on separate lines within these delimiters.
133+
* **Missing data:** Verify that the certificate file contains actual certificate data between the delimiters, not just empty delimiters.
116134

117135
### Error code: ApplicationGatewayTrustedClientCertificateDoesNotContainAnyCACertificate
118136

@@ -122,7 +140,14 @@ The certificate uploaded only contained a leaf certificate without a CA certific
122140

123141
#### Solution
124142

125-
Double check the certificate chain that was uploaded contained more than just the leaf certificate. The *BasicConstraintsOid* = "2.5.29.19" extension should be present and indicate the subject can act as a CA.
143+
Ensure the certificate chain includes at least one CA certificate with the proper *BasicConstraintsOid* extension (OID: 2.5.29.19) where the CA flag is set to TRUE. This extension indicates that the certificate subject can act as a Certificate Authority.
144+
145+
To verify a certificate's CA status, use:
146+
```bash
147+
openssl x509 -in certificate.pem -text -noout | grep -A 2 "Basic Constraints"
148+
```
149+
150+
The output should show "CA:TRUE" for valid CA certificates.
126151

127152
### Error code: ApplicationGatewayOnlyOneRootCAAllowedInTrustedClientCertificate
128153

articles/application-gateway/tutorial-url-redirect-powershell.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ In this article, you learn how to:
2727

2828
The following example shows site traffic coming from both ports 8080 and 8081 and being directed to the same backend pools:
2929

30-
![URL routing and redirection architecture](./media/tutorial-url-redirect-powershell/scenario.png)
30+
:::image type="content" source="./media/tutorial-url-redirect-powershell/scenario.png" alt-text="Diagram of URL routing and redirection architecture." lightbox="./media/tutorial-url-redirect-powershell/scenario.png":::
3131

3232
## Prerequisites
3333

articles/cost-management-billing/manage/link-partner-id-power-apps-accounts.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22
title: Link a partner ID to your Power Platform and Dynamics Customer Insights accounts with your Azure credentials
33
description: This article helps Microsoft partners use their Azure credentials to provide customers with services for Microsoft Power Apps, Power Automate, Power BI and Dynamics Customer Insights.
44
author: kendayMS
5-
ms.reviewer: macyso
5+
ms.reviewer: presharm
66
ms.service: cost-management-billing
77
ms.subservice: billing
88
ms.topic: conceptual
99
ms.date: 05/21/2025
10-
ms.author: macyso
10+
ms.author: presharm
1111
ms.custom: devx-track-azurepowershell, devx-track-azurecli
1212
ms.devlang: azurecli
1313
---

articles/cost-management-billing/manage/link-partner-id.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
title: Link a partner ID to your account that’s used to manage customers
33
description: Track engagements with Azure customers by linking a partner ID to the user account that you use to manage the customer's resources.
44
author: kendayMS
5-
ms.reviewer: macyso
6-
ms.author: macyso
5+
ms.reviewer: presharm
6+
ms.author: presharm
77
ms.date: 05/21/2025
88
ms.service: cost-management-billing
99
ms.subservice: billing

articles/cost-management-billing/manage/programmatically-create-subscription-microsoft-customer-agreement-across-tenants.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
---
22
title: Programmatically create MCA subscriptions across tenants
33
description: Learn how to programmatically create an Azure MCA subscription across Microsoft Entra tenants, including necessary steps and considerations.
4-
author: kendayMS
4+
author: presharm
55
ms.service: cost-management-billing
66
ms.subservice: billing
77
ms.topic: how-to
88
ms.date: 05/29/2025
9-
ms.reviewer: macyso
10-
ms.author: macyso
9+
ms.reviewer: presharm
10+
ms.author: presharm
1111
---
1212

1313
# Programmatically create MCA subscriptions across Microsoft Entra tenants

articles/cost-management-billing/troubleshoot-billing/how-to-create-azure-support-request-ea.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ title: How to create an Azure support request for an Enterprise Agreement issue
33
description: Enterprise Agreement customers who need assistance can use the Azure portal to find self-service solutions and to create and manage support requests.
44
ms.topic: troubleshooting
55
ms.date: 05/21/2025
6-
ms.author: macyso
6+
ms.author: presharm
77
author: KennyDay
8-
ms.reviewer: macyso
8+
ms.reviewer: presharm
99
ms.service: cost-management-billing
1010
ms.subservice: billing
1111
ms.custom:
12-
- build-2025
12+
- build-2025
1313
---
1414

1515
# Create an Azure support request for an Enterprise Agreement issue

0 commit comments

Comments
 (0)