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

Get detailed explanation for invalid SSL certificate (.NET)

我的服务对客户网站进行健康检查并报告他们的健康状况。网站关闭的常见问题之一是 SSL 证书有问题。

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

我想知道是否有一个 library/method 解释出了什么问题(例如,证书已过期或根证书不受信任等)

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 所做的(如果您查看源代码),尽管仅验证 returns 真或假。