我的服务对客户网站进行运行状况查验并报告其运行状况。网站关闭的常见问题之一是SSL证书有问题。
在ServicePointManager.ServerCertificateValidationCallback中,可以访问证书,链等并进行手动检查(当SslPolicyErrors不为None时)。
我想知道是否有一个库/方法可以说明问题所在(例如,证书已过期或根证书不受信任等)
答案 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。