Skip to content

Commit 9e1e715

Browse files
Merge pull request #285606 from v-albemi/ssl-bindings
Freshness - Azure App Service
2 parents 7f6f899 + 6c39ca4 commit 9e1e715

File tree

3 files changed

+36
-36
lines changed

3 files changed

+36
-36
lines changed

articles/app-service/app-service-web-tutorial-custom-domain.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ Browse to the DNS names that you configured.
161161
If you receive an HTTP 404 (Not Found) error when you browse to the URL of your custom domain, the two most likely causes are:
162162

163163
- The browser client has cached the old IP address of your domain. Clear the cache and test the DNS resolution again. On a Windows machine, you can clear the cache with `ipconfig /flushdns`.
164-
- You configured an IP-based certificate binding, and the app's IP address has changed because of it. [Remap the A record](configure-ssl-bindings.md#2-remap-records-for-ip-based-ssl) in your DNS entries to the new IP address.
164+
- You configured an IP-based certificate binding, and the app's IP address has changed because of it. [Remap the A record](configure-ssl-bindings.md#remap-records-for-ip-based-ssl) in your DNS entries to the new IP address.
165165

166166
If you receive a `Page not secure` warning or error, it's because your domain doesn't have a certificate binding yet. [Add a private certificate for the domain](configure-ssl-certificate.md) and [configure the binding](configure-ssl-bindings.md).
167167

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,87 +1,87 @@
11
---
22
title: Secure a custom DNS with a TLS/SSL binding
3-
description: Secure HTTPS access to your custom domain by creating a TLS/SSL binding with a certificate. Improve your website's security by enforcing HTTPS or TLS 1.2.
3+
description: Help secure HTTPS access to your custom domain by creating a TLS/SSL binding with a certificate. Improve your website's security by enforcing HTTPS or TLS 1.2.
44
tags: buy-ssl-certificates
55
ms.custom: devx-track-azurepowershell
66

7-
ms.topic: article
8-
ms.date: 04/20/2023
7+
ms.topic: how-to
8+
ms.date: 09/16/2024
99
ms.reviewer: yutlin
1010
ms.author: msangapu
1111
author: msangapu-msft
1212
---
13-
# Secure a custom DNS name with a TLS/SSL binding in Azure App Service
13+
# Provide security for a custom DNS name with a TLS/SSL binding in App Service
1414

15-
This article shows you how to secure the [custom domain](app-service-web-tutorial-custom-domain.md) in your [App Service app](./index.yml) or [function app](../azure-functions/index.yml) by creating a certificate binding. When you're finished, you can access your App Service app at the `https://` endpoint for your custom DNS name (for example, `https://www.contoso.com`).
15+
This article shows you how to provide security for the [custom domain](app-service-web-tutorial-custom-domain.md) in your [App Service app](./index.yml) or [function app](../azure-functions/index.yml) by creating a certificate binding. When you're finished, you can access your App Service app at the `https://` endpoint for your custom DNS name (for example, `https://www.contoso.com`).
1616

17-
![Web app with custom TLS/SSL certificate](./media/configure-ssl-bindings/app-with-custom-ssl.png)
17+
![Web app with custom TLS/SSL certificate.](./media/configure-ssl-bindings/app-with-custom-ssl.png)
1818

1919
## Prerequisites
2020

21-
- [Scale up your App Service app](manage-scale-up.md) to one of the supported pricing tiers: **Basic**, **Standard**, **Premium**.
21+
- [Scale up your App Service app](manage-scale-up.md) to one of the supported pricing tiers: Basic, Standard, Premium.
2222
- [Map a domain name to your app](app-service-web-tutorial-custom-domain.md) or [buy and configure it in Azure](manage-custom-dns-buy-domain.md).
2323

2424
<a name="upload"></a>
2525

26-
## 1. Add the binding
26+
## Add the binding
2727

2828
In the <a href="https://portal.azure.com" target="_blank">Azure portal</a>:
2929

3030
1. From the left menu, select **App Services** > **\<app-name>**.
3131

32-
1. From the left navigation of your app, select **Custom domains**
32+
1. From the left navigation of your app, select **Custom domains**.
3333

34-
1. Next to the custom domain, select **Add binding**
34+
1. Next to the custom domain, select **Add binding**.
3535

36-
:::image type="content" source="media/configure-ssl-bindings/secure-domain-launch.png" alt-text="A screenshot showing how to launch the Add TLS/SSL Binding dialog.":::
36+
:::image type="content" source="media/configure-ssl-bindings/secure-domain-launch.png" alt-text="A screenshot showing how to launch the Add TLS/SSL Binding dialog." lightbox="media/configure-ssl-bindings/secure-domain-launch.png":::
3737

3838
1. If your app already has a certificate for the selected custom domain, you can select it in **Certificate**. If not, you must add a certificate using one of the selections in **Source**.
3939

40-
- **Create App Service Managed Certificate** - Let App Service create a managed certificate for your selected domain. This option is the simplest. For more information, see [Create a free managed certificate](configure-ssl-certificate.md#create-a-free-managed-certificate).
41-
- **Import App Service Certificate** - In **App Service Certificate**, choose an [App Service certificate](configure-ssl-app-service-certificate.md) you've purchased for your selected domain.
40+
- **Create App Service Managed Certificate** - Let App Service create a managed certificate for your selected domain. This option is the easiest. For more information, see [Create a free managed certificate](configure-ssl-certificate.md#create-a-free-managed-certificate).
41+
- **Import App Service Certificate** - In **App Service Certificate**, select an [App Service certificate](configure-ssl-app-service-certificate.md) you've purchased for your selected domain.
4242
- **Upload certificate (.pfx)** - Follow the workflow at [Upload a private certificate](configure-ssl-certificate.md#upload-a-private-certificate) to upload a PFX certificate from your local machine and specify the certificate password.
4343
- **Import from Key Vault** - Select **Select key vault certificate** and select the certificate in the dialog.
4444

45-
1. In **TLS/SSL type**, choose between **SNI SSL** and **IP based SSL**.
45+
1. In **TLS/SSL type**, select either **SNI SSL** or **IP based SSL**.
4646

47-
- **[SNI SSL](https://en.wikipedia.org/wiki/Server_Name_Indication)**: Multiple SNI SSL bindings may be added. This option allows multiple TLS/SSL certificates to secure multiple domains on the same IP address. Most modern browsers (including Internet Explorer, Chrome, Firefox, and Opera) support SNI (for more information, see [Server Name Indication](https://wikipedia.org/wiki/Server_Name_Indication)).
48-
- **IP based SSL**: Only one IP SSL binding may be added. This option allows only one TLS/SSL certificate to secure a dedicated public IP address. After you configure the binding, follow the steps in [2. Remap records for IP based SSL](#2-remap-records-for-ip-based-ssl).<br/>IP SSL is supported only in **Basic** tier or higher.
47+
- **[SNI SSL](https://en.wikipedia.org/wiki/Server_Name_Indication)**: Multiple SNI SSL bindings can be added. This option allows multiple TLS/SSL certificates to help secure multiple domains on the same IP address. Most modern browsers (including Microsoft Edge, Chrome, Firefox, and Opera) support SNI. (For more information, see [Server Name Indication](https://wikipedia.org/wiki/Server_Name_Indication).)
48+
- **IP based SSL**: Only one IP SSL binding can be added. This option allows only one TLS/SSL certificate to help secure a dedicated public IP address. After you configure the binding, follow the steps in [Remap records for IP-based SSL](#remap-records-for-ip-based-ssl).<br/>IP-based SSL is supported only in Standard tier or higher.
4949

5050
1. When adding a new certificate, validate the new certificate by selecting **Validate**.
5151

5252
1. Select **Add**.
5353

54-
Once the operation is complete, the custom domain's TLS/SSL state is changed to **Secure**.
54+
Once the operation is complete, the custom domain's TLS/SSL state is changed to **Secured**.
5555

5656
:::image type="content" source="media/configure-ssl-bindings/secure-domain-finished.png" alt-text="A screenshot showing the custom domain secured by a certificate binding.":::
5757

5858
> [!NOTE]
59-
> A **Secure** state in the **Custom domains** means that it is secured with a certificate, but App Service doesn't check if the certificate is self-signed or expired, for example, which can also cause browsers to show an error or warning.
59+
> A **Secured** state in **Custom domains** means that a certificate is providing security, but App Service doesn't check if the certificate is self-signed or expired, for example, which can also cause browsers to show an error or warning.
6060
61-
## 2. Remap records for IP based SSL
61+
## Remap records for IP-based SSL
6262

63-
This step is needed only for IP based SSL. For an SNI SSL binding, skip to [Test HTTPS for your custom domain](#3-test-https).
63+
This step is needed only for IP-based SSL. For an SNI SSL binding, skip to [Test HTTPS](#test-https).
6464

65-
There are two changes you need to make, potentially:
65+
There are potentially two changes you need to make:
6666

6767
- By default, your app uses a shared public IP address. When you bind a certificate with IP SSL, App Service creates a new, dedicated IP address for your app. If you mapped an A record to your app, update your domain registry with this new, dedicated IP address.
6868

6969
Your app's **Custom domain** page is updated with the new, dedicated IP address. Copy this IP address, then [remap the A record](app-service-web-tutorial-custom-domain.md#create-the-dns-records) to this new IP address.
7070

71-
- If you have an SNI SSL binding to `<app-name>.azurewebsites.net`, [remap any CNAME mapping](app-service-web-tutorial-custom-domain.md#create-the-dns-records) to point to `sni.<app-name>.azurewebsites.net` instead (add the `sni` prefix).
71+
- If you have an SNI SSL binding to `<app-name>.azurewebsites.net`, [remap any CNAME mapping](app-service-web-tutorial-custom-domain.md#create-the-dns-records) to point to `sni.<app-name>.azurewebsites.net` instead. (Add the `sni` prefix.)
7272

73-
## 3. Test HTTPS
73+
## Test HTTPS
7474

75-
In various browsers, browse to `https://<your.custom.domain>` to verify that it serves up your app.
75+
Browse to `https://<your.custom.domain>` in various browsers to verify that your app appears.
7676

77-
:::image type="content" source="./media/configure-ssl-bindings/app-with-custom-ssl.png" alt-text="Screenshot showing an example of browsing to your custom domain with the contoso.com URL highlighted.":::
77+
:::image type="content" source="./media/configure-ssl-bindings/app-with-custom-ssl.png" alt-text="Screenshot showing an example of browsing to your custom domain. The contoso.com URL is highlighted.":::
7878

79-
Your application code can inspect the protocol via the "x-appservice-proto" header. The header has a value of `http` or `https`.
79+
Your application code can inspect the protocol via the `x-appservice-proto` header. The header has a value of `http` or `https`.
8080

8181
> [!NOTE]
8282
> If your app gives you certificate validation errors, you're probably using a self-signed certificate.
8383
>
84-
> If that's not the case, you may have left out intermediate certificates when you export your certificate to the PFX file.
84+
> If that's not the case, you might have left out intermediate certificates when you exported your certificate to the PFX file.
8585
8686
## Frequently asked questions
8787

@@ -94,7 +94,7 @@ Your application code can inspect the protocol via the "x-appservice-proto" head
9494

9595
#### How do I make sure that the app's IP address doesn't change when I make changes to the certificate binding?
9696

97-
Your inbound IP address can change when you delete a binding, even if that binding is IP SSL. This is especially important when you renew a certificate that's already in an IP SSL binding. To avoid a change in your app's IP address, follow these steps in order:
97+
Your inbound IP address can change when you delete a binding, even if that binding is IP SSL. This is especially important when you renew a certificate that's already in an IP SSL binding. To avoid a change in your app's IP address, follow these steps, in order:
9898

9999
1. Upload the new certificate.
100100
2. Bind the new certificate to the custom domain you want without deleting the old one. This action replaces the binding instead of removing the old one.
@@ -116,21 +116,21 @@ Your app allows [TLS](https://wikipedia.org/wiki/Transport_Layer_Security) 1.2 b
116116

117117
#### How do I handle TLS termination in App Service?
118118

119-
In App Service, [TLS termination](https://wikipedia.org/wiki/TLS_termination_proxy) happens at the network load balancers, so all HTTPS requests reach your app as unencrypted HTTP requests. If your app logic needs to check if the user requests are encrypted or not, inspect the `X-Forwarded-Proto` header.
119+
In App Service, [TLS termination](https://wikipedia.org/wiki/TLS_termination_proxy) happens at the network load balancers, so all HTTPS requests reach your app as unencrypted HTTP requests. If your app logic needs to check if the user requests are encrypted, inspect the `X-Forwarded-Proto` header.
120120

121-
Language specific configuration guides, such as the [Linux Node.js configuration](configure-language-nodejs.md#detect-https-session) guide, shows you how to detect an HTTPS session in your application code.
121+
Language-specific configuration guides, such as the [Linux Node.js configuration](configure-language-nodejs.md#detect-https-session) guide, show how to detect an HTTPS session in your application code.
122122

123123
## Automate with scripts
124124

125-
### Azure CLI
125+
#### Azure CLI
126126

127127
[Bind a custom TLS/SSL certificate to a web app](scripts/cli-configure-ssl-certificate.md)
128128

129-
### PowerShell
129+
#### PowerShell
130130

131131
[!code-powershell[main](../../powershell_scripts/app-service/configure-ssl-certificate/configure-ssl-certificate.ps1?highlight=1-3 "Bind a custom TLS/SSL certificate to a web app")]
132132

133-
## More resources
133+
## Related content
134134

135135
* [Use a TLS/SSL certificate in your code in Azure App Service](configure-ssl-certificate-in-code.md)
136-
* [FAQ : App Service Certificates](./faq-configuration-and-management.yml)
136+
* [Frequently asked questions about creating or deleting resources in Azure App Service](./faq-configuration-and-management.yml)

includes/app-service-ssl-binding-types.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,5 @@ ms.custom: "include file"
1414
|-|-|
1515
| Custom domain | The domain name to add the TLS/SSL binding for. |
1616
| Private Certificate Thumbprint | The certificate to bind. |
17-
| TLS/SSL Type | - **[SNI SSL](https://en.wikipedia.org/wiki/Server_Name_Indication)**: Multiple SNI SSL bindings may be added. This option allows multiple TLS/SSL certificates to secure multiple domains on the same IP address. Most modern browsers (including Internet Explorer, Chrome, Firefox, and Opera) support SNI (for more information, see [Server Name Indication](https://wikipedia.org/wiki/Server_Name_Indication)).<br />- **IP SSL**: Only one IP SSL binding may be added. This option allows only one TLS/SSL certificate to secure a dedicated public IP address. After you configure the binding, follow the steps in [2. Remap records for IP based SSL](../articles/app-service/configure-ssl-bindings.md#2-remap-records-for-ip-based-ssl).<br/>IP SSL is supported only in **Standard** tier or above. |
17+
| TLS/SSL Type | - **[SNI SSL](https://en.wikipedia.org/wiki/Server_Name_Indication)**: Multiple SNI SSL bindings may be added. This option allows multiple TLS/SSL certificates to secure multiple domains on the same IP address. Most modern browsers (including Internet Explorer, Chrome, Firefox, and Opera) support SNI (for more information, see [Server Name Indication](https://wikipedia.org/wiki/Server_Name_Indication)).<br />- **IP SSL**: Only one IP SSL binding may be added. This option allows only one TLS/SSL certificate to secure a dedicated public IP address. After you configure the binding, follow the steps in [Remap records for IP based SSL](../articles/app-service/configure-ssl-bindings.md#remap-records-for-ip-based-ssl).<br/>IP SSL is supported only in **Standard** tier or above. |
1818

0 commit comments

Comments
 (0)