1. 程式人生 > >iOS中發起https的網路請求

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的實質

  1. 信任主機的問題. 
    採用https 的server(伺服器) 必須從CA 申請一個用於證明伺服器用途型別的證書. 所以目前所有的銀行系統網站,關鍵部分應用都是https 的. 客戶通過信任該證書,從而信任了該主機. 其實這樣做效率很低,但是銀行更側重安全. 這一點對我們沒有任何意義,我們的server ,採用的證書不管自己issue(問題) 還是從公眾的地方issue, 客戶端都是自己人,所以我們也就肯定信任該server.
  2. 通訊過程中的資料的洩密和被竄改 
    一般意義上的https, 就是 server 有一個證書,主要目的是保證server是目標伺服器,服務端和客戶端之間的所有通訊,都是加密的。

三.iOS開發中如果實現https的請求

接下來這3句話很重要 
3. 具體講,是客戶端產生一個對稱的金鑰,通過server 的證書來交換金鑰. 一般意義上的握手過程. 
3. https所有的資訊往來就都是加密的. 第三方即使截獲,也沒有任何意義.因為他沒有金鑰(鑰匙串)

  1. (記住這裡)少許對客戶端有要求的情況下,會要求客戶端也必須有一個證書.【這裡客戶端證書,其實就類似表示個人資訊的時候,除了使用者名稱/密碼, 還有一個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)進行資訊交換,簡單來說

AndroidHttps網路請求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面試題--如何在專案處理頁面的多個網路請求

面試題: 如何在專案中處理頁面中的多個網路請求。 在開發中很多時候會有這樣的場景,同一個介面有多個請求,而且要在這幾個請求都成功返回的時候再去進行下一操作,對於這種場景,如何來設計請求操作呢?今天我們就來討論一下有哪幾種方案。 分析: 在網路請求的開發中,經常會遇到兩種情況,一種是多個請求結束後統一操作