Eri*_*ric 10 .net c# certificate winforms
我正在winforms应用程序中发出Web请求.我正在提供自定义证书验证,如下所示:
ServicePointManager.ServerCertificateValidationCallback +=
new RemoteCertificateValidationCallback(certValidator.ValidateRemoteCertificate);
Run Code Online (Sandbox Code Playgroud)
其中certValidator.ValidateRemoteCertificate是
public bool ValidateRemoteCertificate(object sender, X509Certificate certificate,
X509Chain chain, SslPolicyErrors policyErrors)
{
return false;
}
Run Code Online (Sandbox Code Playgroud)
如您所见,此回调应拒绝所有服务器证书并关闭所有尝试的连接.
我的问题是这个回调完全被忽略了.我提交了一个https请求,它就像一个魅力.在调试器中观察它我可以看到它ValidateRemoteCertificate永远不会被调用.
为什么我的替换回叫从未回拨过?
编辑:LB要求webrequest,所以这里是:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(sourceUrl);
request.UseDefaultCredentials = true;
request.UserAgent = "Mozilla/5.0 (Windows; U; MSIE 9.0; WIndows NT 9.0; en-US))";
request.KeepAlive = false;
request.Headers.Add("Accept-Language", "en-us,en;q=1.0");
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Run Code Online (Sandbox Code Playgroud)
编辑2:它可能不相关,但在.config文件中,我指示它使用配置代理,如下所示:
<system.net>
<defaultProxy useDefaultCredentials="true"/>
</system.net>
Run Code Online (Sandbox Code Playgroud)
编辑3:下面是一个完整的,最小的例子,表明了行为.我希望这个例子抛出异常,因为所有的证书都应该被拒绝,但是它可以正常工作.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
namespace SPMCertCallbackDemonstrator
{
class Program
{
static void Main(string[] args)
{
ServicePointManager.ServerCertificateValidationCallback = delegate { return false;};
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.google.com");
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
}
}
}
Run Code Online (Sandbox Code Playgroud)
为什么我的替换回叫从未回拨过?