C # Как решить возврат HtppWebResponse Не удалось установить доверительные отношения для безопасного канала [SSL / TLS]? - PullRequest
0 голосов
/ 23 октября 2018

Я использую .Net Webapi 2, и я получаю следующую ошибку во время вызова другого веб-сервиса с Https.

Could not establish trust relationship for the SSL/TLS secure channel

, и я также нашел временное решение.с добавлением этой строки кода перед выполнением httpwebresponse

ServicePointManager
    .ServerCertificateValidationCallback = 
    RemoveCertificateValidationCallback (delegate { return true; }); 

, во-первых, я понятия не имею, что означает этот код, но, по крайней мере, этот код работает, и я получил успех веб-службы Https.Но этот код обнаруживается при сканировании veracode, и в нем обнаруживаются средние проблемы с безопасностью.

Документация veracode гласит: что я должен отслеживать, истек ли срок действия сертификата или нет.потому что это может сделать исключение.

вопрос в том.Есть ли для меня решение для вызова веб-службы https с сервера?без использования этого кода?или мне нужно установить сертификат, и мне нужно настроить что-то в iis для вызова веб-службы https со стороны сервера / бэкэнда?

1 Ответ

0 голосов
/ 23 октября 2018

Это буквально означает, что место, где работает ваш код, не доверяет сертификату, установленному на удаленном сайте.

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


Номер шага диагностикиОдним из них является посещение этой страницы в вашем браузере и просмотр сертификата.

enter image description here

Убедитесь, что ваш браузер считает, что это безопасно - он скажет вам, почему это не так, если нет.Распространенные причины:

  1. Просрочено (отметьте Действителен от .. до )
  2. Несоответствующее доменное имя (отметьте оба Выдано и Альтернативное имя субъекта )
  3. Выдано ненадежным органом

В случае (1) и (2) это действительнопроблема сервера, с которой должен справиться удаленный сервис.

С учетом (2) иногда люди выдают только сертификат на "www.example.com", а не "example.com" (или "*.example.com", который не включает "example.com"), поэтому простой способ обойти этосайт с соответствующим доменным именем.

В случае (3) распространенной причиной этого является самозаверяющий сертификат.Это как ручаться за себя, и, очевидно, не очень заслуживает доверия.Также возможно, что вы просто не доверяете действительному CA (Certificate Authority), который подписал сертификат.Есть несколько способов справиться с этим:

  • Получите ли веб-сервис новый сертификат от доверенного CA ( LetsEncrypt является хорошим выбором в наши дни, и является как автоматизированным, так и бесплатным)
  • Обновите свои корни доверия (например, если ваша система не имеет последних обновлений): Win 7/10 , Windows Server
  • Импортируйте сертификат корневого ЦС (см. Вкладку Путь к сертификату ), который подписал этот сертификат в вашей системе, и пометьте его как доверенный.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...