2015-05-28 20 views
8

Mam usługę WebJob Azure, która po uruchomieniu lokalnie działa poprawnie, ale po uruchomieniu na platformie Azure zgłasza wyjątek. WebJob czyni zewnętrznego połączenia za pośrednictwem protokołu HTTPS, który w Azure produkuje ten wyjątek:Azure WebJob "Nie można utworzyć bezpiecznego kanału SSL/TLS"

System.Net.WebException: Żądanie zostało przerwane: nie można utworzyć SSL/TLS bezpiecznego kanału. w System.Net.HttpWebRequest.GetResponse()

Próbowałem również ustawienie protokół zabezpieczeń TLS korzystając ServicePointManager ale to też nie miało wpływu na wyjątku. Oto fragment mojego kodu.

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

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

Czy Azure blokuje WebJobs z dostępu do Internetu lub czy robię coś nie tak?

+0

próbował również udaje walidację certyfikatu: ServicePointManager.ServerCertificateValidationCallback = pełnomocnik {powrotu prawdziwa; }; –

+0

To samo dzieje się również, jeśli wykonuję to samo połączenie z funkcji WebApp również w usłudze Azure. Może to jest coś wyłączonego na podstawowych hostach? –

+0

Czy certyfikat usługi zewnętrznej ma łańcuch certyfikacji do wspólnego certyfikatu urzędu certyfikacji? Czy może to być samopodpisany certyfikat, któremu ufasz na swoim komputerze? – BenV

Odpowiedz

0

Spróbuj skalować do podstawowej warstwy. Wygląda na to, że protokół SSL/TLS nie jest obsługiwany w warstwie swobodnej/współużytkowanej, nawet jeśli używasz ich według pliku (nie magazynu certyfikatów).

2

wpadłem na ten sam problem i wreszcie udało się dostać pracy z pomocą poniższego postu na forach 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

Wydaje Microsoft wdrożone rozwiązanie tego problemu w ubiegłym miesiącu (październik 2015), ale miałem również ustawić:

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

pamiętać, że opuszczone SecurityProtocol.Tls gdyż nie wydają się być obsługiwane jak wspomniano przez pracownika firmy Microsoft w jednej z odpowiedzi na ten temat MSDN:

Hello klient z kodu .NET uruchomiony wewnątrz aplikacji sieci web pokazuje, że stara się wykorzystać TLS v1.0 z TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA szyfry, które są oczywiście nie obsługiwane na serwerze. W .NET 4.5 możesz poprosić go o użycie innej wersji protokołu , a potem zaczną działać dla mnie, gdy to zrobię.

+0

to zrobił to dla mnie: