获取有关无效SSL证书(.NET)的详细说明

时间:2019-09-11 00:39:32

标签: c# ssl httpclient

我的服务对客户网站进行运行状况查验并报告其运行状况。网站关闭的常见问题之一是SSL证书有问题。

ServicePointManager.ServerCertificateValidationCallback中,可以访问证书,链等并进行手动检查(当SslPolicyErrors不为None时)。

我想知道是否有一个库/方法可以说明问题所在(例如,证书已过期或根证书不受信任等)

1 个答案:

答案 0 :(得分:1)

X509Chain class可以详细解释为什么某些证书被视为无效。

  var errors = new List<string>();
  var chain = new X509Chain();
  // certificate is the one you want to check
  chain.Build(certificate);

  // traverse certificate chain
  foreach (var chainElement in chain.ChainElements)
  {
    // ChainElementStatus contains validation errors
    foreach (var status in chainElement.ChainElementStatus)
    {
      errors.Add(status.Status + " " + chainElement.Certificate + ": " + status.StatusInformation.Trim());
    }
  }

这与X509Certificate2.Verify的操作(如果您查看源代码)相似,尽管Verify只返回true或false。