You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
title: Custom domain names and certificates in Azure Container Apps
3
-
description: Learn to manage custom domain names and certificates in Azure Container Apps
2
+
title: Custom Domain Names and Certificates in Azure Container Apps
3
+
description: Learn how to manage custom domain names and certificates in Azure Container Apps.
4
4
services: container-apps
5
5
author: craigshoemaker
6
6
ms.service: azure-container-apps
7
7
ms.custom: build-2023, ignite-2024
8
8
ms.topic: how-to
9
-
ms.date: 1/14/2025
9
+
ms.date: 01/29/2026
10
10
ms.author: cshoe
11
11
zone_pivot_groups: azure-cli-or-portal
12
12
---
13
13
14
-
# Custom domain names and bringyourown certificates in Azure Container Apps
14
+
# Custom domain names and bring-your-own certificates in Azure Container Apps
15
15
16
16
Azure Container Apps allows you to bind one or more custom domains to a container app.
17
17
@@ -21,7 +21,7 @@ Azure Container Apps allows you to bind one or more custom domains to a containe
21
21
- Ingress must be enabled for the container app.
22
22
23
23
> [!NOTE]
24
-
> If you configure a [custom environment DNS (Domain Name System) suffix](environment-custom-dns-suffix.md), you can't add a custom domain that contains this suffix to your Container App.
24
+
> If you configure a [custom environment DNS (Domain Name System) suffix](environment-custom-dns-suffix.md), you can't add a custom domain that contains this suffix to your container app.
25
25
26
26
## Add a custom domain and certificate
27
27
@@ -30,54 +30,53 @@ Azure Container Apps allows you to bind one or more custom domains to a containe
30
30
> [!IMPORTANT]
31
31
> If you're using a new certificate, you must have an existing [SNI domain certificate](https://wikipedia.org/wiki/Server_Name_Indication) file available to upload to Azure.
32
32
33
-
1.Navigate to your container app in the [Azure portal](https://portal.azure.com)
33
+
1.Go to your container app in the [Azure portal](https://portal.azure.com).
34
34
35
-
1. Verify that your app has ingress enabled by selecting **Ingress** in the *Settings* section. If ingress isn't enabled, enable it with these steps:
35
+
1. Verify that your app has ingress enabled by selecting **Ingress** in the **Networking** section in the left pane. If ingress isn't enabled, enable it by completing these steps:
36
36
37
-
1. Set *HTTP Ingress* to **Enabled**.
38
-
1. Select the desired *Ingress traffic* setting.
39
-
1. Enter the *Target port*.
37
+
1. Set **HTTP Ingress** to **Enabled**.
38
+
1. Select the **Ingress traffic** setting that you want.
39
+
1. Set the **Ingress type** to **HTTP**.
40
+
1. Enter the **Target port**.
40
41
1. Select **Save**.
41
42
42
-
1.Under the *Settings* section, select **Custom domains**.
43
+
1.In the **Networking** section, select **Custom domains**.
43
44
44
-
1. Select the **Add custom domain** button.
45
+
1. Select **Add custom domain**.
45
46
46
-
1. In the *Add custom domain and certificate* window, in *TLS/SSL certificate*, select **Bring your own certificate**.
47
+
1. In the **Add custom domain and certificate** pane, under **TLS/SSL certificate**, select **Bring your own certificate**.
47
48
48
-
1. In *domain*, enter the domain you want to add.
49
+
1. In **Domain** box, enter the domain that you want to add.
49
50
50
51
1. Select **Add a certificate**.
51
52
52
-
1. In the *Add certificate* window, in *Certificate name*, enter a name for this certificate.
53
-
54
-
1. In *Certificate file* section, browse for the certificate file you want to upload.
53
+
1. In the **Add certificate** pane, in the **Source** box, select **Upload certificate (.pfx)** and browse for the certificate file that you want to upload.
55
54
56
55
1. Select **Validate**.
57
56
58
-
1.Once validation succeeds, select **Add**.
57
+
1.After validation succeeds, select **Add**.
59
58
60
-
1. In the *Add custom domain and certificate* window, in *Certificate*, select the certificate you just added.
59
+
1. In the **Add custom domain and certificate** pane, in **Certificate**, select the certificate that you just added.
61
60
62
-
1. Select the *Hostname record type* based on the type of your domain.
61
+
1. Select the **Hostname record type**, based on the type of your domain:
63
62
64
63
| Domain type | Record type | Notes |
65
64
|--|--|--|
66
-
| Apex domain | A record | An apex domain is a domain at the root level of your domain. For example, if your DNS (Domain Name System) zone is `contoso.com`, then `contoso.com` is the apex domain. |
67
-
| Subdomain | CNAME | A subdomain is a domain that is part of another domain. For example, if your DNS zone is `contoso.com`, then `www.contoso.com` is an example of a subdomain that can be configured in the zone. |
65
+
| Apex domain | A record | An apex domain is a domain at the root level of your domain. For example, if your DNS zone is `contoso.com`, then `contoso.com` is the apex domain. |
66
+
| Subdomain | CNAME | A subdomain is a domain that's part of another domain. For example, if your DNS zone is `contoso.com`, then `www.contoso.com` is an example of a subdomain that can be configured in the zone. |
68
67
69
-
1. Using the DNS provider that is hosting your domain, create DNS records based on the *Hostname record type* you selected using the values shown in the *Domain validation* section. The records point the domain to your container app and verify that you own it. The setup depends on whether you're using custom domains with the private endpoint feature:
68
+
1. Using the DNS provider that hosts your domain, create DNS records based on the **Hostname record type** you selected by using the values shown in the **Domain validation** section. The records point the domain to your container app and verify that you own it. The setup depends on whether you're using custom domains with the private endpoint feature:
70
69
71
70
# [General](#tab/general)
72
71
73
-
- If you selected *A record*, create the following DNS records:
72
+
- If you selected **A record**, create the following DNS records:
74
73
75
74
| Record type | Host | Value |
76
75
|--|--|--|
77
76
| A |`@`| The IP address of your Container Apps environment. |
78
77
| TXT |`asuid`| The domain verification code. |
79
78
80
-
- If you selected *CNAME*, create the following DNS records:
79
+
- If you selected **CNAME**, create the following DNS records:
81
80
82
81
| Record type | Host | Value |
83
82
|--|--|--|
@@ -86,19 +85,19 @@ Azure Container Apps allows you to bind one or more custom domains to a containe
86
85
87
86
# [Private endpoint](#tab/private-endpoint)
88
87
89
-
- If you selected *A record*, you need to have a private DNS zone which has the same DNS zone name as your public DNS. Create the following DNS record on your private DNS zone:
88
+
- If you selected **A record**, you need to have a private DNS zone that has the same DNS zone name as your public DNS. Create the following DNS record on your private DNS zone:
90
89
91
90
| Record type | Host | Value |
92
91
|--|--|--|
93
-
| A |`@`| The Private IP of your private endpoint on your container apps environment. |
92
+
| A |`@`| The private IP address of your private endpoint in your Container Apps environment. |
94
93
95
-
In addition, you'll need to add the following record to your public DNS zone.
94
+
In addition, you need to add the following record to your public DNS zone:
96
95
97
96
| Record type | Host | Value |
98
97
|--|--|--|
99
98
| TXT |`asuid`| The domain verification code. |
100
99
101
-
- If you selected *CNAME*, create the following DNS records on your public DNS zone:
100
+
- If you selected **CNAME**, create the following DNS records on your public DNS zone:
102
101
103
102
| Record type | Host | Value |
104
103
|--|--|--|
@@ -107,33 +106,33 @@ Azure Container Apps allows you to bind one or more custom domains to a containe
107
106
108
107
---
109
108
110
-
1. Select the **Validate** button.
109
+
1. Select **Validate**.
111
110
112
-
1.Once validation succeeds, select the **Add** button.
111
+
1.After validation succeeds, select **Add**.
113
112
114
-
1.Once the operation is complete, you see your domain name in the list of custom domains with a status of *Secured*. Navigate to your domain to verify that it's accessible.
113
+
1.After the operation is complete, you see your domain name in the list of custom domains with a status of **Secured**. Go to your domain to verify that it's accessible.
115
114
116
115
> [!NOTE]
117
-
> For container apps in internal Container Apps environments, [extra configuration](./private-endpoints-with-dns.md) is required to use custom domains with VNET-scope ingress.
116
+
> For container apps in internal Container Apps environments, [extra configuration](./private-endpoints-with-dns.md) is required for using custom domains with VNET-scope ingress.
118
117
119
118
::: zone-end
120
119
121
120
::: zone pivot="azure-cli"
122
121
123
-
Container Apps supports apex domains and subdomains. Each domain type requires a different DNS record type and validation method.
122
+
Container Apps supports apex domains and subdomains. Each domain type requires a different DNS record type and validation method:
124
123
125
124
| Domain type | Record type | Validation method | Notes |
126
125
|--|--|--|--|
127
126
| Apex domain | A record | HTTP | An apex domain is a domain at the root level of your domain. For example, if your DNS zone is `contoso.com`, then `contoso.com` is the apex domain. |
128
-
| Subdomain | CNAME | CNAME | A subdomain is a domain that is part of another domain. For example, if your DNS zone is `contoso.com`, then `www.contoso.com` is an example of a subdomain that can be configured in the zone. |
127
+
| Subdomain | CNAME | CNAME | A subdomain is a domain that's part of another domain. For example, if your DNS zone is `contoso.com`, then `www.contoso.com` is an example of a subdomain that can be configured in the zone. |
129
128
130
-
1.Log in to Azure with the Azure CLI.
129
+
1.Sign in to Azure by using the Azure CLI:
131
130
132
131
```azurecli
133
132
az login
134
133
```
135
134
136
-
1. Next, install the Azure Container Apps extension for the CLI.
135
+
1. Install the Azure Container Apps extension for the CLI:
137
136
138
137
```azurecli
139
138
az extension add --name containerapp --upgrade
@@ -153,18 +152,18 @@ Container Apps supports apex domains and subdomains. Each domain type requires a
153
152
```
154
153
155
154
- Replace `<CERTIFICATE_LOCAL_PATH>` with the local path of your certificate file.
156
-
- Replace `<CERTIFICATE_LOWERCASE_NAME>` with a lowercase certificate name that is unique within the environment.
155
+
- Replace `<CERTIFICATE_LOWERCASE_NAME>` with a lowercase certificate name that's unique within the environment.
157
156
- Replace `<TARGET_PORT>` with the port that your container app is listening on.
158
157
159
-
1. Verify that your container app has HTTP ingress enabled.
158
+
1. Verify that your container app has HTTP ingress enabled:
160
159
161
160
```azurecli
162
161
az containerapp ingress show \
163
162
-n $CONTAINER_APP \
164
163
-g $RESOURCE_GROUP
165
164
```
166
165
167
-
If ingress isn't enabled, enable it with these steps:
166
+
If ingress isn't enabled, enable it:
168
167
169
168
```azurecli
170
169
az containerapp ingress enable \
@@ -175,7 +174,7 @@ Container Apps supports apex domains and subdomains. Each domain type requires a
175
174
--transport auto
176
175
```
177
176
178
-
1. If you're configuring an apex domain, get the IP address of your Container Apps environment.
177
+
1. If you're configuring an apex domain, get the IP address of your Container Apps environment:
179
178
180
179
```azurecli
181
180
az containerapp env show \
@@ -185,7 +184,7 @@ Container Apps supports apex domains and subdomains. Each domain type requires a
185
184
--query "properties.staticIp"
186
185
```
187
186
188
-
1. If you're configuring a subdomain, get the automatically generated domain of your container app.
187
+
1. If you're configuring a subdomain, get the automatically generated domain of your container app:
189
188
190
189
```azurecli
191
190
az containerapp show \
@@ -195,7 +194,7 @@ Container Apps supports apex domains and subdomains. Each domain type requires a
195
194
--query "properties.configuration.ingress.fqdn"
196
195
```
197
196
198
-
1. Get the domain verification code.
197
+
1. Get the domain verification code:
199
198
200
199
```azurecli
201
200
az containerapp show \
@@ -205,18 +204,18 @@ Container Apps supports apex domains and subdomains. Each domain type requires a
205
204
--query "properties.customDomainVerificationId"
206
205
```
207
206
208
-
1. Using the DNS provider that is hosting your domain, create DNS records based on the record type you selected using the values shown in the *Domain validation* section. The records point the domain to your container app and verify that you own it. The setup depends on whether you're using custom domains with the private endpoint feature:
207
+
1. Using the DNS provider that hosts your domain, create DNS records based on the record type you selected by using the values shown in the **Domain validation** section. The records point the domain to your container app and verify that you own it. The setup depends on whether you're using custom domains with the private endpoint feature:
209
208
210
209
# [General](#tab/general)
211
210
212
-
- If you selected *A record*, create the following DNS records:
211
+
- If you selected **A record**, create the following DNS records:
213
212
214
213
| Record type | Host | Value |
215
214
|--|--|--|
216
215
| A | `@` | The IP address of your Container Apps environment. |
217
216
| TXT | `asuid` | The domain verification code. |
218
217
219
-
- If you selected *CNAME*, create the following DNS records:
218
+
- If you selected **CNAME**, create the following DNS records:
220
219
221
220
| Record type | Host | Value |
222
221
|--|--|--|
@@ -227,14 +226,14 @@ Container Apps supports apex domains and subdomains. Each domain type requires a
227
226
228
227
When using a private endpoint for your incoming traffic, you need to [create a private DNS zone](how-to-use-private-endpoint.md#configure-the-private-dns-zone).
229
228
230
-
- If you selected *A record*, create the following DNS records:
229
+
- If you selected **A record**, create the following DNS records:
231
230
232
231
| Record type | Host | Value |
233
232
|--|--|--|
234
-
| A | `@` | The Private IP of your private endpoint on your container apps environment. |
233
+
| A | `@` | The private IP of your private endpoint in your container apps environment. |
235
234
| TXT | `asuid` | The domain verification code. |
236
235
237
-
- If you selected *CNAME*, create the following DNS records:
236
+
- If you selected **CNAME**, create the following DNS records:
238
237
239
238
| Record type | Host | Value |
240
239
|--|--|--|
@@ -243,7 +242,7 @@ Container Apps supports apex domains and subdomains. Each domain type requires a
243
242
244
243
---
245
244
246
-
1. Upload the certificate to your environment.
245
+
1. Upload the certificate to your environment:
247
246
248
247
```azurecli
249
248
az containerapp env certificate upload \
@@ -254,7 +253,7 @@ Container Apps supports apex domains and subdomains. Each domain type requires a
254
253
--certificate-name $CERTIFICATE_LOWERCASE_NAME
255
254
```
256
255
257
-
1. Bind the certificate and domain to your container app.
256
+
1. Bind the certificate and domain to your container app:
258
257
259
258
```azurecli
260
259
az containerapp hostname bind \
@@ -266,39 +265,39 @@ Container Apps supports apex domains and subdomains. Each domain type requires a
266
265
--validation-method <VALIDATION_METHOD>
267
266
```
268
267
269
-
- If you're configuring an *A record*, replace `<VALIDATION_METHOD>` with `HTTP`.
268
+
- If you're configuring an **A record**, replace `<VALIDATION_METHOD>` with `HTTP`.
270
269
271
-
- If you're configuring a *CNAME*, replace `<VALIDATION_METHOD>` with `CNAME`.
270
+
- If you're configuring a **CNAME**, replace `<VALIDATION_METHOD>` with `CNAME`.
272
271
273
272
It might take several minutes to issue the certificate and add the domain to your container app.
274
273
275
-
1. Once the operation is complete, navigate to your domain to verify that it's accessible.
274
+
1. After the operation is complete, go to your domain to verify that it's accessible.
276
275
277
276
::: zone-end
278
277
279
278
## Managing certificates
280
279
281
-
You can manage certificates via the Container Apps environment or through an individual container app.
280
+
You can manage certificates via the Container Apps environment or via an individual container app.
282
281
283
282
### Environment
284
283
285
-
The *Certificates* window of the Container Apps environment presents a table of all the certificates associated with the environment.
284
+
The **Certificates** pane of the Container Apps environment shows a table that contains all certificates associated with the environment. Go to the environment, and then select **Certificates** under **Settings**.
286
285
287
-
You can manage your certificates through the following actions:
286
+
You can manage your certificates by taking the following actions:
288
287
289
288
| Action | Description |
290
289
|--|--|
291
-
| Add | Select the **Add certificate** link to add a new certificate. |
290
+
| Add | Select **Add certificate** to add a new certificate. |
292
291
| Delete | Select the trash can icon to remove a certificate. |
293
-
| Renew | The *Health status* field of the table indicates that a certificate is expiring soon within 60 days of the expiration date. To renew a certificate, select the **Renew certificate** link to upload a new certificate. |
292
+
| Renew | The **Health status** field of the table indicates that a certificate is expiring soon within 60 days of the expiration date. To renew a certificate, select the **Renew certificate** link to upload a new certificate. |
294
293
295
294
### Container app
296
295
297
-
The *Custom domains* window of the container app presents a list of custom domains associated with the container app.
296
+
The **Custom domains** pane of the container app shows a list of custom domains that are associated with the container app. In the left pane, under **Networking**, select **Custom domains**.
298
297
299
298
You can manage your certificates for an individual domain name by selecting the ellipsis (**...**) button, which opens the certificate binding window. From the following window, you can select a certificate to bind to the selected domain name.
300
299
301
-
## Next steps
300
+
## Next step
302
301
303
302
> [!div class="nextstepaction"]
304
303
> [Authentication in Azure Container Apps](authentication.md)
0 commit comments