iOS開發 APP必須使用HTTPS怎麼搞?

蘋果公司上周在該公司的全球開發者會議(WWDC)上宣布稱,公司希望官方應用商店中的所有iOSapp都使用安全的HTTPS鏈接與伺服器進行通信。

去年發布iOS9.0和OS X 10.11版本時,蘋果引進了app傳輸安全(ATS)並默認開啟。這個安全功能旨在通過HTTPS保護app及其伺服器之間的安全連接。目前iOSapp開發人員可禁用ATS,但蘋果在WWDC會議上表示在2016年年底,所有應用商店中的app都需要使用ATS,這樣做的目的是為用戶和app的通信提供安全。這些app將會被要求使用安全的TLSv1.2信道,除非被傳輸的數據已經是加密過的披露數據,如媒體流中的數據。


2017年1月1日起,蘋果App Store中的所有App都必須啟用ATS(App Transport Security)安全功能。(蘋果出了新的通知,強制走ats的審核政策暫緩執行,具體時間還不確定,坊間傳聞是因為12306...)

啟用ATS後,它會屏蔽明文HTTP資源載入,強制App通過HTTPS連接網路服務,不滿足以下條件,ATS都會拒絕連接。

ATS客戶端支持:

  1. https走域名方式請求的,無需更改。

  2. https走IP直連方式,使用私有證書走442埠的,將不再可行;需要埠改成443埠,客戶端預埋證書改為CA證書,並且需要設置域名白名單。

NSMutableArray *policies = [NSMutableArray array];
if (self.validatesDomainName) {
if (self.realDomain.length &> 0)
{
[policies addObject:(__bridge_transfer id)SecPolicyCreateSSL(true, (__bridge CFStringRef)self.realDomain)];
}
else
{
[policies addObject:(__bridge_transfer id)SecPolicyCreateSSL(true, (__bridge CFStringRef)domain)];
}
} else {
[policies addObject:(__bridge_transfer id)SecPolicyCreateBasicX509()];
}

SecTrustSetPolicies(serverTrust, (__bridge CFArrayRef)policies);

3. 測試的時候,將ATS的開關打開,Allow Arbitrary Loads設為NO,並且保證手機系統是iOS9以上。

服務端支持要求:

  • 伺服器必須支持傳輸層安全(TLS)協議1.2以上版本;

  • 證書必須使用SHA256或更高的哈希演算法簽名;

  • 必須使用2048位以上RSA密鑰或256位以上ECC演算法等。

如果想了解哪幾種加密是被充許的,詳見官方文檔,Cocoa Keys

另附,後台地址是否支持ATS的一個檢測網站:

只需訪問 SSL證書 - 騰訊雲,輸入域名和埠進行檢查(如下圖所示),一鍵檢測搞定,如:

以上回答來自騰訊- tedyang 同學,Bugly已獲得授權。


蘋果爸爸動動嘴,我們就要跑斷腿。主要需要適配的地方

1、後台API,這個我們主要網路數據源,應該必須使用https方式進行請求,可以讓後台同學搞一下,不太複雜,我們前端,還能做一下驗證,防止被抓包。

2、圖片下載,很多圖片使用都是獨立的靜態伺服器,可以適配https,也可以加入白名單。不知道這種加入白名單的方式NSExceptionDomains,蘋果是否允許。

3、webView 或是 視頻播放器等,可以設置NSAllowsArbitraryLoadsInWebContent和NSAllowsArbitraryLoadsForMedia這兩個屬性設置為YES

4、還有就是第三方的SDK,包括可能使用的友盟,高德,talkingData,fabric等第三方的需要網路請求的SDK,那就必須升級對應的SDK,應該都會進行https的適配了,如果沒適配,那就只能試試抓包,加白名單了。

大概,就想到這些了,還沒有進行過ATS相關的審核,不知道蘋果爸爸的審核要求程度。只能做猜測。

總體來說,使用https還是挺好的,雖然麻煩點,但是畢竟是趨勢,蘋果爸爸強制升級,問我姿慈不姿慈,我是姿慈的。


好像延期了。。。


要先買SSL服務


服務端去頒發機構買個證書或者用openssl製作自驗證證書,iOS的NSURLConnection或NSURLSession代理可以驗證證書,UIWebview可以使用NSURLConnection驗證後再發送請求,WKWebview在代理方法可以驗證


let"s encrypt 的免費SSL證書,你值得擁有


慢慢搞,我現在就在改這個。/(ㄒoㄒ)/~~


現在好多國外收費證書都已經白菜價了,免費的也不少,申請一個也不會很麻煩吧。

以後運營商針對iOS上的APP通信進行劫持就將成為歷史, 再也不會出現聯通助手、xx助手等。


順應潮流,只是抓包有點麻煩了。


ios開發也就加個s


謝邀。

那就用唄。


推薦閱讀:

iOS 高級工程師是怎麼進階的?
一個 iOS Universal 的 App 代碼結構要怎麼樣寫才算是一個好的代碼?
什麼是 Cocoa,和 Objective-C 有什麼關係?開發 iOS 應用這兩者都要學習嗎?
有開發ios的公司用storyboard寫程序的嗎?
開發者如何減少移動廣告平台價格或分賬比例調整等波動對自身收入帶來的影響?開發者自己應該做好什麼?希望廣告平台做好什麼?

TAG:iOS開發 | iOS應用設計 |