Skip to content

Instantly share code, notes, and snippets.

@Swimburger
Created August 20, 2020 19:14
Show Gist options
  • Save Swimburger/89586abffd42334a47c389c8f4c75c29 to your computer and use it in GitHub Desktop.
Save Swimburger/89586abffd42334a47c389c8f4c75c29 to your computer and use it in GitHub Desktop.
Change ServicePointManager.SecurityProtocol through configuration appsettings
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="SecurityProtocol.Remove" value="Ssl3,Tls" />
<add key="SecurityProtocol.Add" value="Tls11,Tls12" />
</appSettings>
</configuration>
using System.Net;
using System.Configuration;
using System;
using System.Linq;
public static class ConfigureSecurityProtocols
{
public static void Configure()
{
RemoveSecurityProtocols();
AddSecurityProtocols();
}
private static void RemoveSecurityProtocols()
{
var securityProtocolsToRemove = ConfigurationManager.AppSettings["SecurityProtocol.Remove"]
?.Split(',')
.Select(o => o.Trim());
if (securityProtocolsToRemove == null)
{
return;
}
foreach(var securityProtocolString in securityProtocolsToRemove)
{
SecurityProtocolType securityProtocolEnum;
if (Enum.TryParse(securityProtocolString, out securityProtocolEnum)){
// removes security protocol using binary operation
ServicePointManager.SecurityProtocol &= ~securityProtocolEnum;
}
}
}
private static void AddSecurityProtocols()
{
var securityProtocolsAdd = ConfigurationManager.AppSettings["SecurityProtocol.Add"]
?.Split(',')
.Select(o => o.Trim());
if (securityProtocolsAdd == null)
{
return;
}
foreach (var securityProtocolString in securityProtocolsAdd)
{
SecurityProtocolType securityProtocolEnum;
if (Enum.TryParse(securityProtocolString, out securityProtocolEnum))
{
// adds security protocol using binary operation
ServicePointManager.SecurityProtocol |= securityProtocolEnum;
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment