Blog

This article explains how to enable the Transport Layer Security (TLS 1.2) protocol in various versions of Windows, including support for .NET and WinHTTP applications. Since TLS 1.0 and TLS 1.1 are deprecated, ensuring TLS 1.2 support on all Windows clients and servers is critical.

You can purchase original Windows 7 product keys from our catalog from 7.50 €

In modern versions of Windows (11, 10, 8.1, and Windows Server 2022/2019/2016/2012R2), TLS 1.2 is enabled by default. However, enabling TLS 1.2 in Windows 7, Windows Server 2008R2, and Windows Server 2012 requires several configuration steps.

Enabling TLS 1.2 in Windows 7

1. Install Service Pack 1 (SP1) for Windows 7 if it is not already installed.

2. Download and install update KB3140245 from the Microsoft Update Catalog.

3. Download and install the patch MicrosoftEasyFix51044.msi, which adds the necessary registry settings for TLS 1.2 support in Windows 7/2008R2/2012.

4. Reboot the computer.

These steps add the required registry parameters, such as DisabledByDefault = 0 and Enabled = 1, to the registry keys HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client and Server.

For applications using the WinHTTP API, add the parameter DefaultSecureProtocols = 0x00000A00 to the registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp (for 64-bit Windows, use HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp).

Possible Values for DefaultSecureProtocols

0x00000A0: Enables SSL 3.0 and TLS 1.0

0x0000AA0: Enables TLS 1.1 and TLS 1.2

0x00000A00: Enables only TLS 1.1 and TLS 1.2

0x00000800: Enables only TLS 1.2

PowerShell Script for Registry Configuration


$reg32bWinHttp = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp"
$reg64bWinHttp = "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp"
$regWinHttpDefault = "DefaultSecureProtocols"
$regWinHttpValue = "0x00000800"
$regTLS12Client = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client"
$regTLS12Server = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server"
$regTLSDefault = "DisabledByDefault"
$regTLSValue = "0x00000000"
$regTLSEnabled = "Enabled"
$regTLSEnableValue = "0x00000001"

For Windows x86:


$test = Test-Path -Path $reg32bWinHttp
if(-not($test)){
New-Item -Path $reg32bWinHttp
}
New-ItemProperty -Path $reg32bWinHttp -Name $regWinHttpDefault -Value $regWinHttpValue -PropertyType DWORD

For Windows x64:


$test = Test-Path -Path $reg64bWinHttp
if(-not($test)){
New-Item -Path $reg64bWinHttp
}
New-ItemProperty -Path $reg64bWinHttp -Name $regWinHttpDefault -Value $regWinHttpValue -PropertyType DWORD

New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2"
New-Item -Path $regTLS12Client
New-Item -Path $regTLS12Server
New-ItemProperty -Path $regTLS12Client -Name $regTLSDefault -Value $regTLSValue -PropertyType DWORD
New-ItemProperty -Path $regTLS12Client -Name $regTLSEnabled -Value $regTLSEnableValue -PropertyType DWORD
New-ItemProperty -Path $regTLS12Server -Name $regTLSDefault -Value $regTLSValue -PropertyType DWORD
New-ItemProperty -Path $regTLS12Server -Name $regTLSEnabled -Value $regTLSEnableValue -PropertyType DWORD

Reboot the computer:

Restart-Computer

Enabling TLS 1.2 for .NET Framework Applications

To enable TLS 1.2 for .NET Framework applications, configure the registry to use system encryption protocols for .NET 3.5 and 4.x. If using .NET Framework 4.5.1 or 4.5.2 on Windows Server 2012 R2/2012 or Windows 8.1, install the latest updates for .NET Framework 4.5.1 first.

Registry Settings for .NET

For .NET 3.5 and 2.0:


[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727] "SystemDefaultTlsVersions"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727] "SystemDefaultTlsVersions"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727] "SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727] "SchUseStrongCrypto"=dword:00000001

For .NET 4.x:


[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319] "SystemDefaultTlsVersions"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319] "SystemDefaultTlsVersions"=dword:00000001

For .NET 4.6:


[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001

For example, without these settings, PowerShell cannot connect to PSGallery repositories on Windows Server 2012 R2 due to reliance on the deprecated TLS 1.0 protocol.

Using IISCrypto

To manage TLS/SSL protocols and SChannel settings, use the free IISCrypto utility. It allows enabling or disabling protocol versions via a graphical interface. Note that IISCrypto does not modify TLS settings for .NET or WinHTTP.

After applying these configurations, TLS 1.2 will be enabled in Windows 7, ensuring secure communications. This is particularly important for supporting modern applications and services requiring enhanced security.

banner for Windows 7
Buy Windows 7 product key from
8.00 € Find Out More
Subscribe
Notify of
guest
0 comments
Inline Feedbacks
View all comments