1. 程式人生 > >【IOS】HTTPS與HTTP基礎

【IOS】HTTPS與HTTP基礎

HTTPS 以及SSL/TSL

  • 什麼是SSL?

SSL(Secure Sockets Layer, 安全套接字層),因為原先網際網路上使用的 HTTP 協議是明文的,存在很多缺點,比如傳輸內容會被偷窺(嗅探)和篡改。 SSL 協議的作用就是在傳輸層對網路連線進行加密。

  • 何為TLS?

到了1999年,SSL 因為應用廣泛,已經成為網際網路上的事實標準。IETF 就在那年把 SSL 標準化。標準化之後的名稱改為 TLS(Transport Layer Security,傳輸層安全協議)。SSL與TLS可以視作同一個東西的不同階段

  • HTTPS

簡單來說,HTTPS = HTTP + SSL/TLS, 也就是 HTTP over SSL 或 HTTP over TLS,這是後面加 S 的由來 。

HTTPS和HTTP異同:HTTP和HTTPS使用的是完全不同的連線方式,用的埠也不一樣,前者是80,後者是443。HTTP的連線很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網路協議,比HTTP協議安全。

在WWDC 2016開發者大會上,蘋果宣佈了一個最後期限:到2017年1月1日 App Store中的所有應用都必須啟用 App Transport Security安全功能。App Transport Security(ATS)是蘋果在iOS 9中引入的一項隱私保護功能,遮蔽明文HTTP資源載入,連線必須經過更安全的HTTPS。蘋果目前允許開發者暫時關閉ATS,可以繼續使用HTTP連線,但到年底所有官方商店的應用都必須強制性使用ATS。

所以對於iOS開發者來說,需要儘早解決HTTPS請求的問題。

傳送HTTPS請求信任SSL證書和自簽名證書,分為三種情況

1.如果你的app服務端安裝的是SLL頒發的CA,可以使用系統方法直接實現信任SSL證書,關於Apple對SSL證書的要求請參考:蘋果官方文件CertKeyTrustProgGuide

這種方式不需要在Bundle中引入CA檔案,可以交給系統去判斷伺服器端的證書是不是SSL證書,驗證過程也不需要我們去具體實現。