C#-ServerCertificateValidationCallback报告NotSignatureValid

时间:2018-09-21 21:15:32

标签: c# ssl x509

我有一个在几个呼叫中心运行的应用程序。很多代理人整天都在使用它,但是偶尔我会收到有关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,但这已在另一个网络上得到了客观确认准确。

有什么想法吗?

0 个答案:

没有答案