Время от времени вызов службы WCF, размещенной в Microsoft Azure, приводит к проблемам «доверительные отношения для SSL / TLS» - PullRequest
0 голосов
/ 11 июля 2019

Время от времени при вызове службы WCF, размещенной в Azure, возникают проблемы «доверительные отношения для SSL / TLS» при вызове через стандартный адрес https://*.azurewebsites.net. Это работало хорошо в течение многих месяцев. Проблема начала появляться несколько дней назад без каких-либо изменений в моем коде. Обычно повторная попытка решает проблему, и операция успешно завершается.

Я пробовал несколько вариантов в портале Azure, включая изменение версии TLS с 1.0 на 1.1 и 1.2, я пытался использовать настраиваемый защищенный домен SSL, но проблема все еще появляется.

Точное исключение, которое у меня есть:

Не удалось установить доверительные отношения для безопасного канала SSL / TLS с полномочиями «my-address.azurewebsites.net». Удаленный сертификат недействителен в соответствии с процедурой проверки.

в System.Runtime.AsyncResult.End [TAsyncResult] (результат IAsyncResult) в System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End (результат SendAsyncResult) в System.ServiceModel.Channels.ServiceChannel.EndCall (действие String, выходы Object [], результат IAsyncResult) в System.ServiceModel.Channels.ServiceChannelProxy.TaskCreator. <> c__DisplayClass7_0 1.<CreateGenericTask>b__0(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory 1.FromAsyncCoreLogic (IAsyncResult iar, Func 2 endFunction, Action 1 endAction, обещание Task`1, логическое значение требует синхронизация) --- Конец стека трассировки из предыдущего места, где было сгенерировано исключение ---

1 Ответ

0 голосов
/ 11 июля 2019

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

ServicePointManager.ServerCertificateValidationCallback += delegate
            {
                return true;
            };

Кроме того, связь установленаТребуется, чтобы версия ОС и версия Dotnet Framework поддерживались.Пожалуйста, обратитесь к приведенному ниже документу.
https://docs.microsoft.com/en-us/dotnet/framework/network-programming/tls
Нам лучше обновить целевую среду приложения / ОС для поддержки TLS1.2 +.
Не стесняйтесь, дайте мне знать, если есть что-то, с чем я могу помочь.

...