如何使用.net检测SSL策略错误?

时间:2018-01-11 09:44:17

标签: c# ssl

在制作网络请求时,我对处理政策错误完全不熟悉,所以此时我有点困惑..

我有这个任务来调用Web服务,但如果我正在调用的服务器的证书无效,则不允许进行调用。

因此,我创建了一种方法来调用具有无效证书的站点,并使用ServerCertificateValidationCallback来阻止在证书无效时进行调用。

我需要快速了解如何检测处理程序中的无效证书。我原本以为调用“revoked.badssl.com”会导致sslPolicyErrors对象中的某些内容不是“none”,但事实并非如此吗?我认为在调用badssl或我的其他具有有效证书的URL时没有区别。

例如:如果在chrome中打开https://pinning-test.badssl.com/,则显示“ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN”(尽管IE显示页面)。如何找到chrome认为无效证书的信息,以便我可以在我的代码中将其处理为无效?

这是我目前正在尝试的代码:

ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) =>
    {
      if(someError?!)
        return false;

      return true;
    };

    using (HttpClient client = DefaultHttpClient())
    {
      Uri uri = new Uri("https://revoked.badssl.com/");
      string jsonObj = "{}";
      var content = new StringContent(jsonObj, Encoding.UTF8, "application/json");
      HttpResponseMessage response = client.PostAsync(uri, content).Result;
    }

1 个答案:

答案 0 :(得分:0)

默认情况下,不执行吊销检查。您需要在ServicePointManger Class上进行设置,以便您的应用程序进行检查。

System.Net.ServicePointManager.CheckCertificateRevocationList = true;