【发布时间】:2008-09-24 20:06:01
【问题描述】:
我正在使用以下代码来确保所有证书都通过,即使是无效证书,但我想知道是否有更好的方法,因为此事件被全局调用,我只希望证书通过某些 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;
};
上面的代码只是忽略证书上的任何非验证的示例。我遇到的问题是它是一个 global 事件。我看不到事件发生在哪个会话中。我可能有几个 http 请求正在处理,我想要求用户针对每个请求执行操作。
【问题讨论】:
-
这不是破坏了使用 TLS/SSL 保护您的通信的全部目的吗?
-
不 - 它只会让你在中间人 (MITM) 攻击中打开你的大门 - 你仍然可以获得在线加密(无论如何,恕我直言,这是最重要的)。
-
我想我最好多解释一下我的问题 - 将编辑...
-
好吧,我想如果你的威胁模型只包括被动攻击者,那么你不必担心 MITM 攻击,但是,一般来说,MITM 攻击并不难执行,所以将它们排除在威胁模型不值得。
-
嗯,实际的想法是让用户选择是否继续,有点像 TortoiseSvn 所做的。但我想我会及时解决问题;)