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
# Troubleshooting applications that don’t support TLS 1.2
20
20
This article describes how to enable the older TLS protocols (TLS 1.0 and 1.1) as well as applying legacy cipher suites to support the additional protocols on the Windows Server 2019 cloud service web and worker roles.
21
21
22
-
> [!IMPORTANT]
23
-
> We understand that while we are taking steps to deprecate TLS 1.0 and TLS 1.1, our customers may need to support the older protocols and cipher suites until they can [plan](https://azure.microsoft.com/updates/azuretls12/) for their deprecation. While we don't recommend re-enabling these legacy values, we are providing guidance to help customers. We encourage customers to evaluate the risk of regression before implementing the changes outlined in this article.
24
-
22
+
We understand that while we are taking steps to deprecate TLS 1.0 and TLS 1.1, our customers may need to support the older protocols and cipher suites until they can plan for their deprecation. While we don't recommend re-enabling these legacy values, we are providing guidance to help customers. We encourage customers to evaluate the risk of regression before implementing the changes outlined in this article.
25
23
26
24
> [!NOTE]
27
-
> Guest OS Family 6 releases enforces TLS 1.2 by explicitly disabling TLS 1.0 and 1.1 and defining a specific set of cipher suites.
25
+
> Guest OS Family 6 releases enforces TLS 1.2 by disabling 1.0/1.1 ciphers.
28
26
29
27
30
28
## Dropping support for TLS 1.0, TLS 1.1 and older cipher suites
31
29
In support of our commitment to use best-in-class encryption, Microsoft announced plans to start migration away from TLS 1.0 and 1.1 in June of 2017. Since that initial announcement, Microsoft announced our intent to disable Transport Layer Security (TLS) 1.0 and 1.1 by default in supported versions of Microsoft Edge and Internet Explorer 11 in the first half of 2020. Similar announcements from Apple, Google, and Mozilla indicate the direction in which the industry is headed.
32
30
31
+
For more information, see [Preparing for TLS 1.2 in Microsoft Azure](https://azure.microsoft.com/updates/azuretls12/)
32
+
33
33
## TLS configuration
34
34
The Windows Server 2019 cloud server image is configured with TLS 1.0 and TLS 1.1 disabled at the registry level. This means applications deployed to this version of Windows AND using the Windows stack for TLS negotiation will not allow TLS 1.0 and TLS 1.1 communication.
35
35
@@ -46,51 +46,308 @@ The server also comes with a limited set of cipher suites:
46
46
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
47
47
```
48
48
49
+
## Step 1: Create the PowerShell script to enable TLS 1.0 and TLS 1.1
49
50
50
-
## Step 1: Open your existing Azure Web Role project
51
+
Use the following code as an example to create a script that enables the older protocols and cipher suites. For the purposes of this documentation, this script will be named: **TLSsettings.ps1**. Store this script on your local desktop for easy access in later steps.
51
52
52
-
> [!NOTE]
53
-
> The entireity of these steps and scripts can be found in the following [GitHub Repo](https://github.com/microsoft/azure-ssl-configure).
54
53
55
-
Open your own existing Azure Web Role project to begin this process
54
+
```Powershell
55
+
# You can use the -SetCipherOrder (or -sco) option to also set the TLS cipher
56
+
# suite order. Change the cipherorder variable below to the order you want to set on the
57
+
# server. Setting this requires a reboot to take effect.
56
58
57
-
## Step 2: Add the startup scripts to your project
59
+
Param(
60
+
[parameter(Mandatory=$false)]
61
+
[alias("sco")]
62
+
[switch]$SetCipherOrder)
58
63
59
-
Add a new folder in your web role/worker role project called "Startup", copy [SSLConfigure.cmd](https://github.com/microsoft/azure-ssl-configure/blob/master/AzureCloudServiceSample/WebRoleSample/Startup/SSLConfigure.cmd) and [SSLConfigure.ps1](https://github.com/microsoft/azure-ssl-configure/blob/master/AzureCloudServiceSample/WebRoleSample/Startup/SSLConfigure.ps1) files into this folder, and add these files into your project.
To ensure the scripts are uploaded with every update pushed from Visual Studio, the setting *Copy to Output Directory* needs to be set to *Copy Always*
80
+
$restart
62
81
63
-
1) Under your WebRole, right-click on **SSLConfigure.cmd**
64
-
2) Select **Properties**
65
-
3) In the properties tab, change *Copy to Output Directory* to *Copy Always"*
66
-
4) Repeat the steps for **SSLConfigure.ps1**
82
+
}
83
+
84
+
Function Set-CryptoSetting {
85
+
param (
86
+
$keyindex,
87
+
$value,
88
+
$valuedata,
89
+
$valuetype,
90
+
$restart
91
+
)
92
+
93
+
# Check for existence of registry key, and create if it does not exist
94
+
If (!(Test-Path -Path $regkeys[$keyindex])) {
95
+
New-Item $regkeys[$keyindex] | Out-Null
96
+
}
97
+
98
+
# Get data of registry value, or null if it does not exist
REM This line is required to ensure the startup tasks does not block the role from starting in case of error. DO NOT REMOVE!!!!
289
+
EXIT /B 0
85
290
```
86
291
87
-
## Step 4: Update the publish profile
292
+
## Step 3: Add the startup task to the role’s service definition (csdef)
88
293
89
-
If you have an existing Azure Web Role deployed, the recommended AzureDeploymentReplacementMethod in your publish profile is "AutomaticUpgrade", instead of "DeleteAndCreate". If you don't have existing deployment, you can use DeleteAndCreate too.
294
+
Add the following snippet to your existing service definition file.
4) In the file explorer, navigate to your desktop where you stored the **TLSsettings.ps1** and **RunTLSSettings.cmd** files
339
+
5) Select the two files to add them to your Cloud Services project
340
+
341
+
## Step 6: Enable Copy to Output Directory
342
+
343
+
To ensure the scripts are uploaded with every update pushed from Visual Studio, the setting *Copy to Output Directory* needs to be set to *Copy Always*
344
+
345
+
1) Under your WebRole, right-click on RunTLSSettings.cmd
346
+
2) Select **Properties**
347
+
3) In the properties tab, change *Copy to Output Directory* to *Copy Always"*
348
+
4) Repeat the steps for **TLSsettings.ps1**
92
349
93
-
## Step 5: Publish & Validate
350
+
## Step 7: Publish & Validate
94
351
95
352
Now that the above steps have been complete, publish the update to your existing Cloud Service.
0 commit comments