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

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

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

Есть ли подходящее решение для .NET 4.6? Я не беспокоюсь о последствиях для безопасности, это только для внутреннего тестирования.


person kroe761    schedule 10.04.2019    source источник


Ответы (2)


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

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

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

person Abraham Qian    schedule 12.04.2019

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

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

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

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

person Milney    schedule 10.04.2019