.NET Framework 3.5 and TLS 1.2

Solution 1:

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.

Solution 2:

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.