2015-09-17 17 views
6

Tôi đang chuyển từ cuộc gọi dịch vụ web iOS8 sang iOS9 và AFNetworking qua HTTPS hoạt động trước khi không còn hoạt động. Tôi nhận được error -1200error -9824 Sự cố có liên quan đến việc sử dụng chứng chỉ tự ký.iOS9 Cách thích hợp để cập nhật các cuộc gọi AFNetworking hoạt động với HTTPS (lỗi -1200, -9824) là gì?

Tên miền lỗi = kCFErrorDomainCFNetwork Code = -1200 "Lỗi SSL có xảy ra và không thể thực hiện kết nối an toàn với máy chủ." UserInfo = {NSErrorFailingURLStringKey = [máy chủ url], NSLocalizedRecoverySuggestion = Bạn có muốn kết nối đến máy chủ nào ?, _kCFNetworkCFStreamSSLErrorOriginalValue = -9824

Tôi thấy câu hỏi có liên quan này: IOS9 SSL error with NSURLSession, với câu trả lời sau đây, tuy nhiên , câu trả lời là khó hiểu và không thực sự cho tôi biết cách khắc phục vấn đề.

Chứng chỉ ủy thác ATS chỉ được ký bởi một CA nổi tiếng, tất cả những người khác đều bị từ chối . Kết quả là giải pháp duy nhất có chứng chỉ tự ký là đặt ngoại lệ với NSExceptionDomains.

Cách thích hợp để cập nhật lệnh gọi AFNetworking hoạt động với HTTPS trên iOS9 là gì?

Trong quá khứ tôi đã sử dụng nhiều cách giải quyết, bao gồm cách trả lời NSURLAuthenticationChallenge, tuy nhiên tôi đang tìm kiếm điều gì đó dứt khoát hơn.

Trả lời

7

iOS 9 buộc các kết nối đang sử dụng HTTPS là TLS 1.2 để tránh các lỗ hổng gần đây. Trong iOS 8, ngay cả các kết nối HTTP không được mã hóa cũng được hỗ trợ, do đó các phiên bản TLS cũ hơn cũng không gây ra bất kỳ sự cố nào. Để giải quyết vấn đề này, bạn có thể thêm đoạn mã này vào Info.plist của mình:

<key>NSAppTransportSecurity</key> 
    <dict> 
    <key>NSAllowsArbitraryLoads</key> 
    <true/> 
    </dict> 

Do đó bạn vô hiệu hóa Bảo mật truyền tải ứng dụng. Hy vọng đó là hữu ích.

Dưới đây là một giải pháp tiềm năng, (nhưng vẫn không hoạt động trong trường hợp trên) How can I add NSAppTransportSecurity to my info.plist file?

-1

phép Giấy chứng nhận SSL không hợp lệ

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
manager.securityPolicy.allowInvalidCertificates = YES; // not recommended for production 
+0

Không chắc việc này, như ATS vẫn từ chối request/response. – lostintranslation

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