2015-05-28 25 views
8

Tôi có một Azure WebJob mà khi chạy cục bộ hoạt động tốt, nhưng khi chạy trong Azure nó ném một ngoại lệ. WebJob đang thực hiện cuộc gọi bên ngoài qua HTTPS mà Azure tạo ra ngoại lệ này:Azure WebJob "Không thể tạo kênh bảo mật SSL/TLS"

System.Net.WebException: Yêu cầu bị hủy: Không thể tạo kênh an toàn SSL/TLS. tại System.Net.HttpWebRequest.GetResponse()

Tôi cũng đã thử thiết lập giao thức bảo mật cho TLS bằng cách sử dụng ServicePointManager nhưng điều này cũng không ảnh hưởng đến ngoại lệ. Đây là một đoạn mã của tôi.

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

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

Azure có chặn các WebJob khỏi truy cập internet hoặc tôi đang làm điều gì sai?

+0

Đồng thời cố gắng giả mạo xác thực chứng chỉ: ServicePointManager.ServerCertificateValidationCallback = delegate {return true; }; –

+0

Điều tương tự cũng xảy ra nếu tôi thực hiện cuộc gọi tương tự từ WebApp trong Azure. Có lẽ nó là một cái gì đó vô hiệu hóa trên các máy chủ cơ bản? –

+0

Chứng chỉ dịch vụ bên ngoài có một chuỗi chứng nhận đến một chứng chỉ CA thông thường không? Hay nó giống như một chứng chỉ tự ký mà bạn đã tin cậy trên máy tính của bạn? – BenV

Trả lời

0

Thử chia tỷ lệ thành cấp cơ bản. Có vẻ như SSL/TLS không được hỗ trợ trên tầng Miễn phí/Chia sẻ, ngay cả khi bạn đang sử dụng chúng theo tệp (không phải kho lưu trữ chứng chỉ).

2

Tôi chạy vào cùng một vấn đề và cuối cùng là quản lý để có được nó làm việc với sự giúp đỡ từ các bài dưới đây trên các diễn đàn 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

Có vẻ như Microsoft đã triển khai một sửa chữa cho vấn đề này vào tháng trước (tháng 2015), nhưng tôi cũng phải thiết lập:

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

Lưu ý rằng tôi rời ra SecurityProtocol.Tls vì nó dường như không được hỗ trợ như đã đề cập bởi một nhân viên của Microsoft trong một trong các câu trả lời về chủ đề MSDN:

Các chào khách hàng từ mã NET chạy bên trong một ứng dụng web cho thấy rằng nó đang cố gắng sử dụng TLS v1.0 với TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, mật mã TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA đó rõ ràng không phải được hỗ trợ trên máy chủ. Trong .NET 4.5, bạn có thể yêu cầu nó sử dụng phiên bản giao thức khác nhau và sau đó mọi thứ bắt đầu hoạt động cho tôi khi tôi làm điều đó.

+0

này đã làm nó cho tôi:

Các vấn đề liên quan