Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

.NET Framework 3.5 and TLS 1.2

Tags:

c#

asp.net

I currently have a web application that uses the .NET 3.5 framework and I am wondering if it will be compatible with TLS 1.2. No where in our code are we dictating TLS version. This is a legacy application and recompiling is not on the table right now. I am not finding much info on whether you can or cannot, but I was under the impression that compatibility is more dependent on the OS version. It looks like the minimum is 2008 R2. The goal is to get paypal to communicate properly come July 1st.

like image 860
Chris Lombardi Avatar asked Apr 05 '17 20:04

Chris Lombardi


People also ask

What version of TLS does .NET 3.5 use?

NET framework version 3.5 SP1 and earlier versions did not provide support for applications to use Transport Layer Security (TLS) System Default Versions as a cryptographic protocol. This update enables the use of TLS v1. 2 in the . NET Framework 3.5 SP1.

Is .NET 3.5 still supported?

NET 3.5 SP1 will receive 5 years of mainstream support followed by 5 years of extended support. Go here to see end dates for this product. On operating systems prior to Windows 10 version 1809 and Windows Server 2019, . NET 3.5 SP1 assumes the same lifecycle policy as the underlying OS on which it is installed.

How do I know if TLS 1.2 is compatible?

Browse to Tools → Internet options → Advanced. 2. Under Security section, you will see a list of SSL and TLS protocols supported. Enable Use TLS 1.2 if present.

Is TLS 1.2 still supported?

The TLS 1.2 Deadline As previously mentioned, as of the end of 2020, TLS versions 1.0 and 1.1 are no longer supported. That means that websites that don't support TLS 1.2 or higher are now incapable of creating secure connections.


2 Answers

As was mentioned .net 3.5.1 DOES now support TLS 1.2; but you don't need the registry changes mentioned by @Paulina's answer.

I'm using VS 2008 with .net 3.5.30729.4926. All I had to do was:

Add imports:

Imports System.Security.Authentication Imports System.Net 

Add this to my code (C#):

public const SslProtocols _Tls12 = (SslProtocols)0x00000C00; public const SecurityProtocolType Tls12 = (SecurityProtocolType)_Tls12; ServicePointManager.SecurityProtocol = Tls12 

VB.net version:

Const _Tls12 As SslProtocols = DirectCast(&HC00, SslProtocols) Const Tls12 As SecurityProtocolType = DirectCast(_Tls12, SecurityProtocolType) ServicePointManager.SecurityProtocol = Tls12 

Culled from: https://support.microsoft.com/en-us/help/3154518/support-for-tls-system-default-versions-included-in-the-.net-framework Note: by defining the const in my code I could ignore everything else in the article including the registry edits and cs files.

like image 93
D_Bester Avatar answered Sep 21 '22 08:09

D_Bester


As you can see from the docs, TLS 1.2 is not in the enumeration for SslProtocols, it was added to the enum in .NET 4.5 (thanks @orhun).

There is no workaround for TLS 1.2 compatibility on .NET 3.5.

Unfortunately you will have to upgrade to .NET 4.5 or later to get TLS 1.2 compatibility.

EDIT 10/11/17

My above answer is no longer accurate. In May of 2017, Microsoft released a package to allow TLS 1.2 in .NET 3.5.1.

like image 24
maccettura Avatar answered Sep 22 '22 08:09

maccettura