Skip to content

Instantly share code, notes, and snippets.

@arnabdas
Created March 12, 2019 06:50
Show Gist options
  • Save arnabdas/0428897b47a861f365d9930f87608b0a to your computer and use it in GitHub Desktop.
Save arnabdas/0428897b47a861f365d9930f87608b0a to your computer and use it in GitHub Desktop.
SOAP Auto Choose TLS1.2 or higher

If your client application was compiled against .NET Framework 4.5.2 or lower, then by default ServicePointManager.SecurityProtocol is initialized to SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls (SSL 3.0 and TLS 1.0 only), so it won't be able to connect to a remote server that requires TLS 1.2.

There are several ways to allow your client application to use TLS 1.2:

  • Recompile your client application against .NET Framework 4.6 or later. (In Visual Studio, open your project's property pages, go to the Application tab, and change the Target Framework.)
  • On the client machine, run RegEdit.exe, go to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ .NETFramework\v4.0.30319, add a DWORD (32-bit) value named SchUseStrongCrypto, and set it to 1. (This flag causes ServicePointManager.SecurityProtocol to be initialized to Tls | Tls11 | Tls12.)
  • When your client application starts up, turn on TLS 1.2: ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12;

There's no need to regenerate your proxy class because it's not responsible for negotiating the TLS protocol or cipher.

Taken from stackoverflow

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment