Веб-задание Azure не может создать безопасный канал SSL / TLS

У меня есть веб-задание Azure, которое при локальном запуске работает нормально, но при запуске в Azure выдает исключение. Веб-задание выполняет внешний вызов через HTTPS, который в Azure создает следующее исключение:

System.Net.WebException: запрос был прерван: не удалось создать безопасный канал SSL / TLS. в System.Net.HttpWebRequest.GetResponse ()

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

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

var request = (HttpWebRequest)WebRequest.Create(url);
                request.Method = "GET";

Блокирует ли Azure доступ к Интернету для веб-заданий или я что-то делаю не так?


person Ashley Poole    schedule 28.05.2015    source источник
comment
Также пытался подделать проверку сертификата: ServicePointManager.ServerCertificateValidationCallback = delegate {return true; };   -  person Ashley Poole    schedule 29.05.2015
comment
То же самое произойдет, если я сделаю тот же вызов из веб-приложения в Azure. Может это что-то отключено на нижележащих хостах?   -  person Ashley Poole    schedule 29.05.2015
comment
Имеет ли сертификат внешней службы цепочку сертификации до общего сертификата CA? Или это как самозаверяющий сертификат, которому вы доверяете на своей машине разработчика?   -  person BenV    schedule 29.05.2015
comment
Он использует сертификат, подписанный центром сертификации. Домен - tls.so. Я считаю, что это как-то связано с тем, что сертификат использует SNI и Azure.   -  person Ashley Poole    schedule 30.05.2015


Ответы (2)


Я столкнулся с той же проблемой, и, наконец, мне удалось заставить ее работать с помощью следующего сообщения на форумах MSDN:

https://social.msdn.microsoft.com/Forums/en-US/ca6372be-3169-4fb5-870f-bfbea605faf6/azure-webapp-webjob-exception-could-not-create-ssltls-secure-channel?forum=windowsazurewebsitespreview

Похоже, что Microsoft развернула исправление этой проблемы в прошлом месяце (октябрь 2015 г.), но мне также пришлось установить:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11;

Обратите внимание, что я пропустил SecurityProtocol.Tls, поскольку он, похоже, не поддерживается, как упомянул сотрудник Microsoft в одном из ответов на тему MSDN:

Привет от клиента из кода .NET, запущенного внутри веб-приложения, показывает, что он пытается использовать TLS v1.0 с шифрами TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, которые явно не поддерживаются на сервере. В .NET 4.5 вы можете попросить его использовать другую версию протокола, и как только я это сделаю, у меня все заработает.

person Frank    schedule 02.11.2015
comment
Это сделало это для меня: ‹system.net› ‹settings› ‹servicePointManager expect100Continue = false /› ‹/settings› ‹/system.net› - person Rob Sedgwick; 05.01.2017

Попробуйте перейти на базовый уровень. Похоже, что SSL / TLS не поддерживается на уровне Free / Shared, даже если вы используете их по файлам (а не в хранилище сертификатов).

person Yodacheese    schedule 24.06.2015