using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;
namespace iWareCommon.Utils
{
public static class SSLUtil
{
public static void SetCertificatePolicy_New()
{
//当在浏览器中可以正常访问,而code中出现错误时,可以用fiddle看下正常访问的SSl加密认证的版本号
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
ServicePointManager.ServerCertificateValidationCallback =
new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);
}
public static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
{
return true;
}
///
/// Sets the cert policy.
///
public static WebRequestHandler SetCertificatePolicy2()
{
var handler = new WebRequestHandler();
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
handler.ServerCertificateValidationCallback += RemoteCertificateValidate;
return handler;
}
///
/// Sets the cert policy.
///
public static HttpClientHandler SetCertificatePolicy3()
{
HttpClientHandler clientHandler = new HttpClientHandler();
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
//clientHandler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => { return true; };
return clientHandler;
}
///
/// Sets the cert policy.
///
public static void SetCertificatePolicy()
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
ServicePointManager.ServerCertificateValidationCallback
+= RemoteCertificateValidate;
}
///
/// Remotes the certificate validate.
///
private static bool RemoteCertificateValidate(
object sender, X509Certificate cert,
X509Chain chain, SslPolicyErrors error)
{
// trust any certificate!!!
System.Console.WriteLine("Warning, trust any certificate");
return true;
}
}
}