Our .net WCF Client, the WebRequest call, compiled to a windows EXE, running on Win2012-R2, refuses to connect to a web server that surfaces ONLY TLS 1.2
We know that Win2012 and .NET 4.5x support TLS 1.2
We have no problems when the server surfaces TLS 1.0 and up. The problem is only seen when the server we connect to has DISABLED TLS 1.0, 1.1 and SSL2 and SSL3. The Server ONLY surfaces TLS 1.2. Chrome and firefox (on Win 7 and higher) connect fine to the server (no warnings or SSL issues of any kind).
The server certificate is %100 OK.
The problem is that WebRequest fails to connect in this situation.
What do we need to set in code so that our use of WebRequest will connect to systems that may run TLS 1.2, 1.1, 1.0, and/or SSL v3?
How to enable TLS 1.2. The easiest way to avoid these issues is to upgrade to the latest version of Visual Studio as it already uses TLS 1.2 for all HTTPS connections. If upgrading Visual Studio is not an option, you can set a set a machine-wide registry key to enable TLS 1.2 on all .
When running the installer, you will see that when making the WCF call during installation it will only use TLS 1.0, but when you run the installed app afterwards, it will use TLS 1.2. Even though it is the exact same code base that makes the WCF call.
You should work with .NET 4.5 or above version and add this line in your code:
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
While not easy to figure out, the needed property is:
System.Net.ServicePointManager.SecurityProtocol
This can be used to disable and enable TLS levels in the WCF environment.
Further, you can see what WCF is currently set to using:
Console.WriteLine(System.Net.ServicePointManager.SecurityProtocol.ToString());
With thanks to: How do I disable SSL fallback and use only TLS for outbound connections in .NET? (Poodle mitigation)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With