在C#中处理非验证SSL证书的最佳方法是什么
时间:2020-03-06 14:41:11 来源:igfitidea点击:
我正在使用以下代码来确保所有证书都通过,即使无效证书也可以通过,但是我想知道是否有更好的方法,因为此事件在全局范围内被调用,并且我只希望证书通过某个HTTP调用而不是异步发生的任何其他事件。
// This delegate makes sure that non-validating SSL certificates are passed ServicePointManager.ServerCertificateValidationCallback = delegate(object certsender, X509Certificate cert, X509Chain chain, System.Net.Security.SslPolicyErrors error) { return true; };
上面的代码仅是忽略证书上所有无效验证的示例。我遇到的问题是这是一个全球性事件。我看不到该活动正在哪个会议上进行。我可能要处理几个http请求,我想问用户每个请求的操作。
解决方案
好吧,我们实际上可以打扰检查其中一些参数。 ;)例如,如果我们具有自签名证书,则仅允许error == SslPolicyErrors.RemoteCertificateChainError通过。我们还可以检查证书本身上的颁发者,名称等,以提高安全性。
那certsender
参数呢?它是否包含任何有意义的内容,以便我们可以知道回调发生了什么连接?我检查了.NET API,但未说明参数应包含的内容...