iOS中發起https的網路請求
一.HTTPS概括
HTTPS: HTTPS(Secure Hypertext Transfer Protocol)安全超文字傳輸協議 它是一個安全通訊通道,它基於HTTP開發,用於在客戶計算機和伺服器之間交換資訊。它使用安全套接字層(SSL)進行資訊交換,簡單來說它是HTTP的安全版。
HTTP與HTTPS的比較
比較 | http | https |
---|---|---|
埠 | 80 | 443 |
協議 | 超文字傳輸協議(明文傳輸) | HTTP+SSL(SSL使用40位關鍵字作為RC4流加密演算法) |
證書 | 需要到ca申請證書 |
二.HTTPS的實質
- 信任主機的問題.
採用https 的server(伺服器) 必須從CA 申請一個用於證明伺服器用途型別的證書. 所以目前所有的銀行系統網站,關鍵部分應用都是https 的. 客戶通過信任該證書,從而信任了該主機. 其實這樣做效率很低,但是銀行更側重安全. 這一點對我們沒有任何意義,我們的server ,採用的證書不管自己issue(問題) 還是從公眾的地方issue, 客戶端都是自己人,所以我們也就肯定信任該server. - 通訊過程中的資料的洩密和被竄改
一般意義上的https, 就是 server 有一個證書,主要目的是保證server是目標伺服器,服務端和客戶端之間的所有通訊,都是加密的。
三.iOS開發中如果實現https的請求
接下來這3句話很重要
3. 具體講,是客戶端產生一個對稱的金鑰,通過server 的證書來交換金鑰. 一般意義上的握手過程.
3. https所有的資訊往來就都是加密的. 第三方即使截獲,也沒有任何意義.因為他沒有金鑰(鑰匙串)
- (記住這裡)少許對客戶端有要求的情況下,會要求客戶端也必須有一個證書.【這裡客戶端證書,其實就類似表示個人資訊的時候,除了使用者名稱/密碼, 還有一個CA 認證過的身份. 這樣能夠更安全的確認自己的身份。比如少數個人銀的具體證書可能是拿U盤作為一個備份的載體.這裡的U盾就是CA 驗證過的身份
**接下來作為拓展可以不做了解
HTTPS 的實現
1.http協議,一個get(獲取)一個response(返回). 由於https 要還金鑰和確認加密演算法的需要.單握手就需要6/7
個往返.過多的round trip(巡迴) 肯定影響效能.
2.具體的http協議,每一次響應或者請求, 都要求客戶端和服務端對會話的內容做加密/解密.儘管對稱加密/解密效率比較高,可是仍然要消耗過多的CPU,為此有專門的SSL 晶片. 如果CPU 信能比較低的話,肯定會降低效能,從而不能serve 更多的請求.加密後資料量的影響. 所以,才會出現那麼多的安全認證提示。
補充附錄:
說道安全機制 不得不說說鑰匙串(金鑰=密碼鑰匙)
公鑰(Public Key)與私鑰(Private Key)是通過一種演算法得到的一個金鑰對(即一個公鑰和一個私鑰),公鑰是金鑰對中公開的部分,私鑰則是非公開的部分。
通過演算法得到的金鑰對能保證在世界範圍內是唯一的。使用這個金鑰對的時候,如果用其中一個金鑰加密一段資料,必須用另一個金鑰解密。(比如用公鑰加密資料就必須用私鑰解密,如果用私鑰加密也必須用公鑰解密,否則解密將不會成功)
一把私有的鑰匙,僅有使用者才擁有。
一把公開的鑰匙,可公開發行配送,只要有要求即取得。
相關推薦
iOS中發起https的網路請求
一.HTTPS概括 HTTPS: HTTPS(Secure Hypertext Transfer Protocol)安全超文字傳輸協議 它是一個安全通訊通道,它基於HTTP開發,用於在客戶計算機和伺服器之間交換資訊。它使用安全套接字層(SSL)進行資訊交換,簡單來說
Android中的Https網路請求get和post 不進行認證
HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer)是通過證書認證、資料加密打造的一條安全的HTTP通道,也就是安全版HTTP,一般在金融行業用到的比
IOS中多個網路請求問題
在多執行緒中,有時候我們會遇到一個介面同時有多個網路請求(比如a,b,c,d四個網路請求),在這四個個請求結束後,在請求到資料去做其他操作(UI更新等) 在IOS的多執行緒解決方案中,GCD為我們提供了一種解決方案:dispatch_group 和訊號量 //建立訊號
iOS開發之HTTP與HTTPS網路請求
HTTP是網際網路中應用最為廣泛的一種網路協議,在進入正文之前,先解釋什麼是網路協議?網路協議為計算機網路中進行資料交換而建立的規則、標準或約定的集合。網路協議是由以下三個要素組成:語義、語法、時序。 (1) 語義 語義是解釋控制資訊每個部分的意義。它規定了需要發出何種控制資訊,
iOS重構-輕量級的網路請求封裝實踐
前言 在十分鐘搭建主流框架_簡單的網路部分(OC) 中,我們使用AFN框架順利的傳送網路請求並返回了有用資料,但對AFN框架的依賴十分嚴重,下面我們重構一下。 原始碼github地址 初步 很多時候,我們涉及到網路請求這塊,都離不開幾個第三方框架,AFNetw
監控自己APP的http/https網路請求的地址和請求耗時
關於監控http/https網路請求的思路, 目前想到兩種實現思路: 第一種實現思路是hook http請求的根介面, 目前大致是分為HttpURLConnection和Apache-Http-Client這兩種, 當然也有可能使用square/okhttp或者koush/Android
IOS 使用NSURLProtocol 攔截網路請求實現快取
最近專案需要實現一個WKWebview的快取功能,然後想到通過攔截http/https請求,然後通過url字串的MD5串來作為“Key” 儲存和讀取快取,快取資料使用YYCache 這個快取框架還是很不錯的,有通過連結串列實現的記憶體快取,和資料庫以及檔案實現的
Retrofit網路異常回調中拿到網路請求url等資料
前言 開心原創哦 Retrofit 與RxJava結合,異常 處理都走了onError(Throwable t) 方法. 在該異常回調中,我們拿不到網路請求url等資料,只能拿到Throwable物件。 使用場景 異常統一處理,但異常回調中無法區分哪一個介面網路請求
iOS 【OC 封裝網路請求業務類(AFHTTPSessionManager)】
由於AFNetworking底層請求由NSURLConnection更新為NSURLSession,管理者物件也由AFHTTPRequestOperationManager更新為AFURLSessionManager。 本文重點講述如何封裝AFN業務類,將第三方為程式帶來的
iOS開發:NSUrlSession網路請求的封裝
網路請求AFNetworking使用量不用過多的說了,但是在開發過程中,需要用到自己去封裝一個網路請求,此處主要是說一下NSUrlSession的用法; 首先建立一個繼承與NSObject的.h和.m的類,.h中的程式碼如下: #import &
使用Retrofit進行Http、Https網路請求(快速上手)
1.配置gradle //註解包 compile 'com.jakewharton:butterknife:7.0.0' //Retrofit2所需要的包//這裡需要值得注意的是匯入的retrofit2包的版本必須要一致,否則就會報錯compile 'com.squareu
iOS 中對 HTTPS 證書鏈的驗證
稍微整理了下,共扯了三部分內容: HTTPS 簡要原理;數字證書的內容、生成及驗證;iOS 上對證書鏈的驗證。HTTPS 概要 HTTPS 是執行在 TLS/SSL 之上的 HTTP,與普通的 HTTP 相比,在資料傳輸的安全性上有很大的提升。 要了解它安全性的巧妙之處,需要先簡單地瞭解對稱加密和非對稱加密
【iOS解決方案】網路請求返回GB2312格式的xml資料轉成UTF-8後為空(適用於論壇bbs)
一些高校的bbs由於歷史久遠,沒有適應新的資料結構,請求返回的資料還是xml格式的,而現在常用的返回是json,這是個很頭疼的地方,碰到的問題網上很難搜到資料,走了很多彎路。 現在具體講一下在解析返回xml過程中碰到的問題,希望能有些借鑑: 1.xml編碼問題: 對
iOS9、iOS10 HTTPS 網路請求
傲嬌的蘋果公司 2017.1.1之後對 APP的網路請求做了一個安全改變,也就是所謂的https(顧名思義,就是對http進行了安全加密;S:security) 先從iOS 9 的https開始說吧,iOS 9 之後,所有的網路請求都要改成HTTPS:但其實iOS 9的ht
iOS 自己封裝的網路請求,json解析的類
基本上所有的APP都會涉及網路這塊,不管是用AFNetWorking還是自己寫的http請求,整個網路框架的搭建很重要。 樓主封裝的網路請求類,包括自己寫的http請求和AFNetWorking的請求,程式碼簡單,主要是框架搭建。簡單來說,就是一個請求類,一個
iOS http轉換https網路訪問的配置
後臺配置一個CA證書,包含域名資訊等,儲存後給前端使用,前端把cer檔案拖入工程中。(必須保證前後端使用的證書一致) info.plist 檔案中原本設定NSAllowsArbitraryLoads 設定為NO,NSAllowsArbitraryLoads若
iOS開發--HTTP的網路請求狀態程式碼詳解
網路請求是iOS專案的一個大部分,而且大部分的iOS的專案的網路請求是根據AFN進行的二次封裝,我們檢視返回的結果或者error的網路錯誤code,從而確認錯誤型別,針對行的進行除錯修改. 說明:一下整理內容來自網路或者書籍,同時也加上了自己的修改和補充,主要
如何在java中發起http和https請求
一般呼叫外部介面會需要用到http和https請求。 一.發起http請求 1.寫http請求方法 //處理http請求 requestUrl為請求地址 requestMethod請求方式,值為"GET"或"POST" public static String h
如何在java中發起http和https請求 配置信任
記錄下專案中遇到的問題一般呼叫外部介面會需要用到http和https請求。一.發起http請求1.寫http請求方法//處理http請求 requestUrl為請求地址 requestMethod請求方式,值為"GET"或"POST" publicstatic St
iOS面試題--如何在專案中處理頁面中的多個網路請求
面試題: 如何在專案中處理頁面中的多個網路請求。 在開發中很多時候會有這樣的場景,同一個介面有多個請求,而且要在這幾個請求都成功返回的時候再去進行下一操作,對於這種場景,如何來設計請求操作呢?今天我們就來討論一下有哪幾種方案。 分析: 在網路請求的開發中,經常會遇到兩種情況,一種是多個請求結束後統一操作