代码之家  ›  专栏  ›  技术社区  ›  Mladen Mihajlovic

在C中处理非验证SSL证书的最佳方法是什么#

  •  4
  • Mladen Mihajlovic  · 技术社区  · 16 年前

    我使用下面的代码来确保所有证书都通过,甚至是无效的证书,但是我想知道是否有更好的方法,因为这个事件是全局调用的,我只希望证书通过某个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请求正在处理,我想请求用户执行一个操作 对于每个请求 .

    2 回复  |  直到 16 年前
        1
  •  1
  •   Alexander    16 年前

    那呢? certsender 争论?它是否包含任何合理的内容,以便您能够知道回调是为什么连接进行的?我检查了.NET API,但它没有说明参数应该包含什么…

        2
  •  1
  •   Mark Brackett Achilles Ram Nakirekanti    16 年前

    实际上,您可能会费心检查其中的一些参数。;)例如,如果您有一个自签名证书,那么只允许 error == SslPolicyErrors.RemoteCertificateChainError 通过。您还可以检查证书本身的颁发者、名称等以获得额外的安全性。