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

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

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

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

Ответы [ 2 ]

0 голосов
/ 12 апреля 2019

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

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

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

0 голосов
/ 11 апреля 2019

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

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

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

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

...