iOS學習之旅10 ATS(App Transport Security)對HTTPS協議要求引起的問題

來源:互聯網
上載者:User

標籤:

問題描述

編寫以下代碼擷取網路某個資源的MIMEType

 1 -(void)getMIMEType 2 { 3     //路徑 4     NSURL *url = [NSURL URLWithString:@"https://www.baidu.com/img/bd_logo1.png"]; 5     //請求對象 6     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 7     NSOperationQueue *queue = [[NSOperationQueue alloc]init]; 8     [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) { 9         NSLog(@"%@",response.MIMEType);10     }];11 }

運行提示如下錯誤:

NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802),同時請求返回的結果為nil

問題解析ATS要求

因為蘋果在iOS9引入隱私保護功能ATS(App Transport Security)屏蔽HTTP協議,在學習過程中遇到HTTP相關問題,因此寫了這篇文章 iOS學習之旅7 ATS安全功能屏蔽HTTP協議 ,但今天又遇到ATS上的問題。

在iOS 9.0及以後版本和OS X10.11及以後版本編譯的應用中,所有使用NSURLConnection、 CFURL、或 NSURLSession的串連都使用ATS預設行為。ATS不遵守以下要求的串連將會失敗並斷開。

  • 伺服器必須至少支援傳輸層安全(TLS)協議版本1.2。
  • 串連的密碼僅限於提供完全正向保密的密碼(perfect forward secrecy)。(參見下面的密碼列表)
  • 認證必須使用SHA256雜湊演算法或更好的簽名雜湊演算法進行簽名,使用2048位或更高的RSA密鑰,或者256位或更高的Elliptic-Curve (ECC)密鑰。否則無效的認證會導致串連失敗並斷開。

以下是可接受的密碼:
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

完全正向保密(perfect forward secrecy)

查了下資料,完全正向保密(perfect forward secrecy)要求一個密鑰只能訪問由它所保護的資料;不能使用保護資料轉送的密鑰派生其他密鑰。此外,也不能使用保護資料轉送的密鑰的源派生其他密鑰;一個密鑰被破解, 並不影響其他密鑰的安全性。確保密鑰的長期保密材料不會影響來自以前通訊的已交換密鑰的保密性。

“TLS” 自然是指TLS協議。 “ECDHE” 是說使用帶有短暫性密鑰的橢圓曲線Diffie-Hellman金鑰交換(也就是說要為每個會話建立新密鑰並且事後也不會記下來)。“RSA”表明用 RSA 非對稱式加密保護TLS握手的安全。 “AES_128_CBC” 是說在密碼塊連結模式中用帶有128位密鑰的AES 非對稱式加密保護真正的資料交換。最後的 “SHA” 表明用 SHA 安全雜湊演算法。

 

問題解決

iOS學習之旅10 ATS(App Transport Security)對HTTPS協議要求引起的問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.