“Не удалось установить доверительные отношения для защищенного канала SSL / TLS с полномочиями” для SOAP в .NET 4.6.2

#c# #.net #wcf #soap #.net-4.6

#c# #.net #wcf #soap #.net-4.6

Вопрос:

Я пытаюсь выполнить вызов SOAP WCF для внутреннего приложения из .NET 4.6.2, и я получаю сообщение об ошибке выше. Я нашел решение, которое, как я думал, сработает, но после дальнейшего изучения оно применимо только к .NET 4.5:

 System.Net.ServicePointManager.ServerCertificateValidationCallback  =
            (se, cert, chain, sslerror) => true;
  

Существует ли совместимое решение для .NET 4.6? Меня не беспокоят последствия для безопасности, это только для внутреннего тестирования.

Ответ №1:

Для проверки сертификата сервера вы можете использовать следующий код в качестве альтернативы, он хорошо работает в Asp.net Также и основной проект.

 //client is a proxy class object.
           client.ClientCredentials.ServiceCertificate.SslCertificateAuthentication =
    new X509ServiceCertificateAuthentication()
    {
        CertificateValidationMode = X509CertificateValidationMode.None,
        RevocationMode = X509RevocationMode.NoCheck
    };
  

Не стесняйтесь, дайте мне знать, если проблема все еще существует.

Ответ №2:

Для ServerCertificateValidationCallback требуется по крайней мере .Net 4.5 — он должен нормально работать в 4.6.2. Если он не работает, попробуйте установить его перед созданием экземпляра клиента.

В качестве дополнительного примечания вам действительно не следует отключать validate глобально, даже если это «только для тестирования», поскольку это довольно большая проблема безопасности, и эти знаменитые последние слова перед тем, как тестовое решение внезапно заработает, и вы слишком заняты, чтобы не забыть его удалить!

Как именно вы выполняете вызов? Все механизмы также имеют более целенаправленные способы отключения проверки только для этого одного вызова.

В качестве альтернативы просто поместите самозаверяющий сертификат на конечную точку и доверяйте ему на своем компьютере разработчика, тогда вы не откроете никаких дыр в безопасности.