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
# Enable HTTPS for a custom domain in Azure App Service
15
15
16
-
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`).
16
+
This article shows you how to provide security for the [custom domain](app-service-web-tutorial-custom-domain.md) in your [Azure 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 Domain Name System (DNS) name. An example is `https://www.contoso.com`.
17
17
18
-

18
+

19
19
20
20
## Prerequisites
21
21
22
-
-[Scale up your App Service app](manage-scale-up.md) to one of the supported pricing tiers: Basic, Standard, Premium.
22
+
-[Scale up your App Service app](manage-scale-up.md) to one of the supported pricing tiers: Basic, Standard, or Premium.
23
23
-[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).
24
24
25
25
<aname="upload"></a>
@@ -28,78 +28,69 @@ This article shows you how to provide security for the [custom domain](app-servi
28
28
29
29
In the <ahref="https://portal.azure.com"target="_blank">Azure portal</a>:
30
30
31
-
1.From the left menu, select **App Services** > **\<app-name>**.
31
+
1.On the left pane, select **App Services** > *\<app-name>*.
32
32
33
-
1.From the left navigation of your app, select **Custom domains**.
33
+
1.On the left pane of your app, select **Custom domains**.
34
34
35
35
1. Next to the custom domain, select **Add binding**.
36
36
37
-
:::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":::
37
+
:::image type="content" source="media/configure-ssl-bindings/secure-domain-launch.png" alt-text="Screenshot that shows how to open the Add TLS/SSL Binding dialog." lightbox="media/configure-ssl-bindings/secure-domain-launch.png":::
38
38
39
-
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**.
39
+
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 by using one of the selections in **Source**:
40
40
41
-
-**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).
42
-
-**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.
43
-
-**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.
44
-
-**Import from Key Vault** - Select**Select key vault certificate** and select the certificate in the dialog.
41
+
-**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).
42
+
-**Import App Service Certificate**: In **App Service Certificate**, select the[App Service certificate](configure-ssl-app-service-certificate.md)that you purchased for your selected domain.
43
+
-**Upload certificate (.pfx)**: Follow the workflow at [Upload a private certificate](configure-ssl-certificate.md#upload-a-private-certificate) to upload a Personal Information Exchange file (PFX) certificate from your local machine and specify the certificate password.
44
+
-**Import from Key Vault**: Choose**Select key vault certificate** and select the certificate in the dialog.
45
45
46
-
1. In **TLS/SSL type**, select either **SNI SSL** or **IP based SSL**.
46
+
1. In **TLS/SSL type**, select either **SNI SSL** or **IP based SSL**:
47
47
48
-
-**[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).)
49
-
-**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.
48
+
-[SNI SSL](https://en.wikipedia.org/wiki/Server_Name_Indication): You can add multiple Server Name Indication (SNI) Secure Sockets Layer (SSL) bindings. This option allows multiple Transport Layer Security (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).)
49
+
-**IP based SSL**: You can add only one IP SSL binding. 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).IP-based SSL is supported only in the Standard tier or higher.
50
50
51
-
1. When adding a new certificate, validate the new certificate by selecting **Validate**.
51
+
1. When you add a new certificate, select **Validate** to validate the new certificate.
52
52
53
53
1. Select **Add**.
54
54
55
-
Once the operation is complete, the custom domain's TLS/SSL state is changed to **Secured**.
56
-
57
-
:::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.":::
58
-
59
-
> [!NOTE]
60
-
> 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.
55
+
After the operation is complete, the custom domain's TLS/SSL state is changed to **Secured**.
56
+
57
+
:::image type="content" source="media/configure-ssl-bindings/secure-domain-finished.png" alt-text="Screenshot that shows the custom domain secured by a certificate binding.":::
58
+
59
+
A **Secured** state in **Custom domains** means that a certificate provides security. App Service doesn't check if the certificate is self-signed or expired, which can also cause browsers to show an error or warning.
61
60
62
61
## Remap records for IP-based SSL
63
62
64
63
This step is needed only for IP-based SSL. For an SNI SSL binding, skip to [Test HTTPS](#test-https).
65
64
66
-
There are potentially two changes you need to make:
65
+
There are potentially two changes that you need to make:
67
66
68
67
- 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.
69
68
70
-
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.
69
+
Your app's **Custom domain** page is updated with the new, dedicated IP address. Copy this IP address, and then [remap the A record](app-service-web-tutorial-custom-domain.md#create-the-dns-records) to this new IP address.
71
70
72
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.)
73
72
74
73
## Test HTTPS
75
74
76
75
Browse to `https://<your.custom.domain>` in various browsers to verify that your app appears.
77
76
78
-
:::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.":::
77
+
:::image type="content" source="./media/configure-ssl-bindings/app-with-custom-ssl.png" alt-text="Screenshot that shows an example of browsing to your custom domain. The contoso.com URL is highlighted.":::
79
78
80
-
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`.
81
80
82
-
> [!NOTE]
83
-
> If your app gives you certificate validation errors, you're probably using a self-signed certificate.
84
-
>
85
-
> If that's not the case, you might have left out intermediate certificates when you exported your certificate to the PFX file.
81
+
If your app gives you certificate validation errors, you're probably using a self-signed certificate. If that's not the case, you probably left out intermediate certificates when you exported your certificate to the .pfx file.
86
82
87
83
## Frequently asked questions
88
84
89
-
-[How do I make sure that the app's IP address doesn't change when I make changes to the certificate binding?](#how-do-i-make-sure-that-the-apps-ip-address-doesnt-change-when-i-make-changes-to-the-certificate-binding)
90
-
-[Can I disable the forced redirect from HTTP to HTTPS?](#can-i-disable-the-forced-redirect-from-http-to-https)
91
-
-[How can I change the minimum TLS versions for the app?](#how-can-i-change-the-minimum-tls-versions-for-the-app)
92
-
-[How do I handle TLS termination in App Service?](#how-do-i-handle-tls-termination-in-app-service)
93
-
94
85
<aname="prevent-ip-changes"></a>
95
86
96
87
#### How do I make sure that the app's IP address doesn't change when I make changes to the certificate binding?
97
88
98
-
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:
89
+
Your inbound IP address can change when you delete a binding, even if that binding is IP SSL. This behavior 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:
99
90
100
91
1. Upload the new certificate.
101
-
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.
102
-
3. Delete the old certificate.
92
+
1. Bind the new certificate to the custom domain that you want without deleting the old one. This action replaces the binding instead of removing the old one.
93
+
1. Delete the old certificate.
103
94
104
95
<aname="enforce-https"></a>
105
96
@@ -111,7 +102,7 @@ By default, App Service forces a redirect from HTTP requests to HTTPS. To disabl
111
102
112
103
#### How can I change the minimum TLS versions for the app?
113
104
114
-
Your app allows [TLS](https://wikipedia.org/wiki/Transport_Layer_Security) 1.2 by default, which is the recommended TLS level by industry standards, such as [PCI DSS](https://wikipedia.org/wiki/Payment_Card_Industry_Data_Security_Standard). To enforce different TLS versions, see [Configure general settings](configure-common.md#configure-general-settings).
105
+
Your app allows [TLS](https://wikipedia.org/wiki/Transport_Layer_Security) 1.2 by default. Industry standards such as [PCI DSS](https://wikipedia.org/wiki/Payment_Card_Industry_Data_Security_Standard) recommend this TLS level. To enforce different TLS versions, see [Configure general settings](configure-common.md#configure-general-settings).
0 commit comments