我有一个在几个呼叫中心运行的应用程序。很多代理人整天都在使用它,但是偶尔我会收到有关SSL错误的错误报告。每当出现问题时,我都会使用System.Net.ServicePointManager.ServerCertificateValidationCallback转储整个链和错误。
在这种情况下,错误日志显示链状态和状态信息:
Status: NotSignatureValid => The signature of the certificate cannot be verified.
我还导出和转储链中的证书信息(缩略图,发行者等),包括由此生成的PEM格式:
int certNumber = 0;
foreach (System.Security.Cryptography.X509Certificates.X509ChainElement element in chain.ChainElements)
{
certNumber++;
sb.AppendLine("Certificate #" + certNumber + ":");
sb.AppendLine(" Subject: " + element.Certificate.Subject);
sb.AppendLine(" Issuer: " + element.Certificate.Issuer);
sb.AppendLine(" Serial #: " + element.Certificate.SerialNumber);
sb.AppendLine(" Thumbprint: " + element.Certificate.Thumbprint);
sb.AppendLine(" Valid Dates: " + element.Certificate.NotBefore.ToString() + " to " + element.Certificate.NotAfter.ToString());
sb.AppendLine(" Signature Algorithm: " + element.Certificate.SignatureAlgorithm.FriendlyName);
sb.AppendLine(" Version: " + element.Certificate.Version);
sb.AppendLine(" Encoded Certificate: " + Convert.ToBase64String(element.Certificate.Export(X509ContentType.Cert)));
}
我已经对结果进行了三重检查,并验证了链条是否完整,并且转储的所有编码证书(也通过指纹进行了双重验证)都是正确的。我看不到任何发生任何MITM或SSL拦截/检查的迹象-它们只是正确的原始证书,因此我不确定证书签名如何无效。
证书全为2048位,我能看到的唯一奇怪的是主题证书和中间CA使用sha256RSA作为其签名算法,但是根CA使用sha1RSA,但这已在另一个网络上得到了客观确认准确。
有什么想法吗?