C # - ServerCertificateValidationCallback сообщая NotSignatureValid - PullRequest
0 голосов
/ 22 сентября 2018

У меня есть приложение, работающее в нескольких колл-центрах.Он используется многими агентами в течение всего дня, но иногда я получаю отчет об ошибках 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, но это было объективно подтверждено в отдельной сети как точная.

Есть идеи?

...