绕过.net核心中的无效SSL证书

我正在开发一个需要连接到https站点的项目。 每次连接时,我的代码都会抛出exception,因为该站点的证书来自不受信任的站点。 有没有办法绕过证书检查.net核心http?

我在以前版本的.NET中看到了这段代码。 我想我只需要这样的东西。

ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true; 

.Net Core不支持ServicePointManager.ServerCertificateValidationCallback。

目前的情况是,它将成为即将推出的4.1。* System.Net.Http合同(HttpClient)的新ServerCertificateCustomValidationCallback方法。 .NET Core团队现在正在最终确定4.1合同。 你可以在github上看到这个

您可以直接在CoreFx或MYGET Feed中使用源代码来试用System.Net.Http 4.1的预发布版本: https ://dotnet.myget.org/gallery/dotnet-core

Github上的当前WinHttpHandler.ServerCertificateCustomValidationCallback定义

您可以使用这样的匿名回调函数覆盖HTTP调用上的SSL证书检查

 using (var httpClientHandler = new HttpClientHandler()) { httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return true; }; using (var client = new HttpClient(httpClientHandler)) { // Make your request... } } 

另外,我建议为HttpClient使用工厂模式,因为它是一个可能不会立即处理的共享对象,因此连接将保持打开状态 。

来到这里寻找同一问题的答案,但我正在使用WCF for NET Core。 如果你在同一条船上,请使用:

 client.ClientCredentials.ServiceCertificate.SslCertificateAuthentication = new X509ServiceCertificateAuthentication() { CertificateValidationMode = X509CertificateValidationMode.None, RevocationMode = X509RevocationMode.NoCheck };