4

我正在使用以下代码来确保所有证书都通过,即使是无效的,但我想知道是否有更好的方法,因为这个事件被全局调用,我只希望证书通过某个 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 请求通过,我想询问用户对每个请求的操作。

4

2 回答 2

1

好吧,您实际上可以费心检查其中一些参数。;) 例如,如果你有一个自签名证书,那么只让error == SslPolicyErrors.RemoteCertificateChainError通过。您还可以检查证书本身的颁发者、名称等,以提高安全性。

于 2008-09-24T20:59:12.493 回答
1

certsender论据呢?它是否包含任何合理的信息,以便您可以知道回调发生的连接是什么?我检查了.NET API,但它没有说明参数应该包含什么......

于 2008-09-25T14:23:14.760 回答