如何最好地验证 WebClient 中的证书?
目前我有这个:
class SafeClient : WebClient
{
protected override WebRequest GetWebRequest(Uri address)
{
var request = base.GetWebRequest(address);
byte[] embeddedCert;
using (Stream certStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Test.Resources.test.pfx"))
{
embeddedCert = new byte[certStream.Length];
certStream.Read(embeddedCert, 0, (int)certStream.Length);
}
var cert = new X509Certificate2(embeddedCert, "Pass");
(request as HttpWebRequest).ClientCertificates.Add(cert);
return request;
}
}
但是我如何检查服务器响应中的证书。我不希望任何人都可以读/写响应/请求白查尔斯或...
预先感谢您以及来自德国的良好问候。
最佳答案
如果我理解你的目的正确的话,你想在发出请求后获取有关服务器证书的信息。
为此 HttpWebRequest 提供一个特殊的委托(delegate)。 HttpWebRequest.ServerCertificateValidationCallback 。
因此,您的代码可能如下所示:
var request = (HttpWebRequest)WebRequest.Create("https://");
request.ServerCertificateValidationCallback += (sender, cert, chain, error) =>
{
//TODO:implement your custom logic
};
我希望此链接对您也有用。 ServicePointManager.ServerCertificateValidationCallback Property
关于C# 证书固定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50400383/