一做祝、ATS 是什么睁枕?
ATS (App Transport Security 應(yīng)用通訊安全)是一個提升APP網(wǎng)絡(luò)服務(wù)連接安全性的特性搜变,默認網(wǎng)絡(luò)連接必須執(zhí)行安全鏈接的最佳實踐凤巨,工作在iOS9及OSX 10.11版本之后。App可以重寫默認行為來關(guān)閉安全傳輸特性男摧。
(默認ATS蔬墩,現(xiàn)關(guān)閉ATS译打,在info.plist 按如下修改:
(1)添加 App Transport Security Settings
(2)給其添加 子項Allow Arbitrary Loads ,并改為位YES
![](/var/folders/f0/b0zpq_x938s25_zgzy01_y780000gn/T/com.evernote.Evernote/WebKitDnD.5haHFH/屏幕快照 2016-01-17 上午4.52.12.png)
所有使用NSURLConnection,CFURL或者NSURLSession APIs的連接在iOS9及OSX 10.11版本之后都會默認遵循ATS(包括UIWebView)拇颅。
ATS必須遵循以下要求:
- App服務(wù)端必須支持TLS1.2或以上版本奏司。
- 加密算法僅限于正向加密。證書必須使用SHA256或更好的簽名散列算法署名樟插,伴隨3. 一個2048位或更高位的RSA密鑰或者256位或更高位的Elliptic-Curve密鑰韵洋。
- 非法的證書配置會導(dǎo)致不能建立連接返回失敗。
例外
可以在Info.plist中對app或extension聲明一些例外來避免使用ATS黄锤,使用列表中的特定key可以聲明特定的例外搪缨。或者你可以通過特定的聲明來完全關(guān)閉ATS猜扮。
至于如何配置勉吻,請參考蘋果文檔。
二旅赢、為什么HTTPS齿桃?
在沒有大面積普及HTTPS的情況下,大家一般都是使用自有方式來努力保證傳輸加密煮盼。但是HTTP的天生特性導(dǎo)致短纵,總會暴露一些參數(shù)在外。所以HTTPS的優(yōu)勢不需多說僵控。
HTTPS是更安全的HTTP協(xié)議香到,它在TCP(負責網(wǎng)絡(luò)數(shù)據(jù)傳輸)和HTTP層之間,增加了一個SSL層报破。這一層通過數(shù)字證書和加密算法對HTTP請求進行加密悠就。已經(jīng)采用HTTP協(xié)議的網(wǎng)站要過渡到HTTPS,將在技術(shù)改造充易、服務(wù)器資源梗脾、流量資源上付出更多成本。
為什么中國絕大多數(shù)都沒有使用HTTPS盹靴?
開發(fā)者向證書管理機構(gòu)申請證書需要付費炸茧,這無可厚非因為證書管理和升級需要成本。但對于中小型網(wǎng)站而言稿静,這會成為障礙梭冠。
網(wǎng)頁引入的資源如JS、CSS和圖片文件均需要采取HTTPS改备,這些資源可能來自不同部門或者公司控漠,需要進行對應(yīng)處理,需要大量時間和人力成本悬钳。
HTTPS會增加服務(wù)器的計算和帶寬成本润脸。SSL層在TCP協(xié)議的握手流程上增加了幾次握手柬脸,另外每一次請求都需要進行RSA校驗計算,這都會給服務(wù)器造成更多計算壓力毙驯。緩存效率的變低,支持HTTPS的CDN(內(nèi)容發(fā)布網(wǎng)絡(luò))節(jié)點更少灾测,這會增加流量成本爆价。網(wǎng)絡(luò)規(guī)模越大,計算和流量成本越高媳搪。
HTTPS握手次數(shù)增加則會讓發(fā)起請求者有一定程度的延遲铭段。雖然在光纖網(wǎng)絡(luò)普及的今天,用戶基本無感知秦爆,但是在手機 2G 網(wǎng)絡(luò)狀態(tài)下序愚,可能會帶來明顯延遲。
為了避免重復(fù)加密等限,減少服務(wù)端和用戶端的加解密資源和時間耗費爸吮,HTTP已有的安全加密方案需要做調(diào)整。
研究報告稱望门,HTTPS會讓頁面加載時間增加了50%形娇,增加10%到20%的耗電,此外筹误,HTTPS還會影響緩存桐早,增加數(shù)據(jù)開銷和功耗,已有安全措施也會受到影響厨剪。 2
但是我們還是如此迫切需要HTTPS哄酝,因為這是迄今為止最為成熟和高效的數(shù)據(jù)安全傳輸方式。這也是Apple力推ATS的最大原因祷膳。