Вопрос: C# API не удалось установить доверительные отношения для безопасного канала SSL/TLS

Я только что получил следующую ошибку при вызове API. Не удалось установить доверительные отношения для безопасного канала SSL/TLS.

Я исправил это с помощью класса RemoteCertificateValidationCallback:

ServicePointManager.ServerCertificateValidationCallback += 
            new RemoteCertificateValidationCallback(Helpers.CertificateHelper.ValidateCertificates);

И там я просто применил фрагмент кода, найденный здесь: Как проверить сертификат X509 без импорта корневого сертификата?

Теперь все работает нормально, но.. Это путь? Это нормально, или мне не следует использовать этот метод?


person Rymo    schedule 25.01.2021    source источник
comment
это не правильный путь. Какой из них правильный, зависит от контекста. Почему вы получаете эту ошибку? Если это неправильная конфигурация на одноранговой стороне, вам следует попросить их исправить это. Попытки исправить это на вашей стороне, скорее всего, сделают вас уязвимыми для MITM-атак.   -  person Crypt32    schedule 26.01.2021
comment
Я получаю сообщение об ошибке, потому что мне не хватает корневых сертификатов (наверное, на сервере?). Я только что скачал их (из документации по API) и проверил их в обратном вызове. Можно ли добавить эти сертификаты на сервер?   -  person Rymo    schedule 26.01.2021


Ответы (1)


Когда ваш сервер проверяет сертификаты по запросу, он попытается проверить всю цепочку сертификатов. Код, который вы использовали, в основном говорит вашему серверу пропустить проверку корневого ca. Вы не должны этого делать, потому что, как сказал Crypt32, это делает вас более уязвимыми для атак.

Если полученная вами ошибка сообщает вам, что вам не хватает корневых сертификатов, вы должны убедиться, что ваш сервер доверяет этим сертификатам.

Если это сервер Windows, вы можете установить их в доверенных корневых центрах сертификации — об этом есть пояснение здесь

Будьте осторожны с тем, каким сертификатам вы доверяете — убедитесь, что вашему источнику можно доверять

Если это не сработает, вы должны опубликовать здесь точную ошибку, которую вы получаете, и мы сможем лучше понять проблему.

person StavSheiz    schedule 25.01.2021