欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

iOS 基于AFNetworking下自簽名證書配置的方法

 更新時間:2018年03月21日 10:03:31   作者:雪中夜歸人  
本篇文章主要介紹了iOS 基于AFNetworking下自簽名證書配置的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

自從https推出以后,客戶端對網(wǎng)絡(luò)安全的要求程度也越來越高。甚至在iOS9之后,蘋果強制要求必須支持https請求。

https是什么呢?它又是如何保證數(shù)據(jù)安全的呢?

簡單來說,https就是http+TLS/SSL。就是在http上又加了一層處理加密信息的模塊。服務(wù)端和客戶端的信息傳輸都會通過TLS進(jìn)行加密,也就說傳輸中的數(shù)據(jù)都是加密的,如果不知道私鑰,是無法真正知道傳輸內(nèi)容的真正意思的。

整個https單向驗證流程簡單總結(jié)如下:

  1. 就是用戶發(fā)起請求,服務(wù)器響應(yīng)后返回一個證書,證書中包含一些基本信息和公鑰。
  2. 用戶拿到證書后,去驗證這個證書是否合法,不合法,則請求終止。
  3. 合法則生成一個隨機(jī)數(shù),作為對稱加密的密鑰,用服務(wù)器返回的公鑰對這個隨機(jī)數(shù)加密。然后返回給服務(wù)器。
  4. 服務(wù)器拿到加密后的隨機(jī)數(shù),利用私鑰解密,然后再用解密后的隨機(jī)數(shù)(對稱密鑰),把需要返回的數(shù)據(jù)加密,加密完成后數(shù)據(jù)傳輸給用戶。
  5. 最后用戶拿到加密的數(shù)據(jù),用一開始的那個隨機(jī)數(shù)(對稱密鑰),進(jìn)行數(shù)據(jù)解密。整個過程完成。

當(dāng)然這僅僅是一個單向認(rèn)證,https還會有雙向認(rèn)證,相對于單向認(rèn)證也很簡單。僅僅多了服務(wù)端驗證客戶端這一步。

那么在AFNetworking中,我們要完成自簽名證書配置:

// 自簽名證書在路徑
NSString *certFilePath = [[NSBundle mainBundle] pathForResource:@"service" ofType:@"cer"];
// 自簽名證書轉(zhuǎn)換成二進(jìn)制數(shù)據(jù)
NSData *certData = [NSData dataWithContentsOfFile:certFilePath];
// 將二進(jìn)制數(shù)據(jù)放到NSSet中
NSSet *certSet = [NSSet setWithObject:certData];
/* AFNetworking中的AFSecurityPolicy實例化方法
  第一個參數(shù):
  AFSSLPinningModeNone,  //不驗證
  AFSSLPinningModePublicKey,   //只驗證公鑰
  AFSSLPinningModeCertificate,   //驗證證書
  第二個參數(shù):存放二進(jìn)制證書數(shù)據(jù)的NSSet
*/
AFSecurityPolicy *policy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate withPinnedCertificates:certSet];
// shareManager 是繼承自AFHTTPSessionManager的一個類的實例對象
sharedManager.securityPolicy = policy;

這樣在請求時,如果服務(wù)器要校驗自簽名證書就會調(diào)用AFSecurityPolicy類中以下方法

- (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust
         forDomain:(NSString *)domain

AFNetworking就是在這個方法中進(jìn)行的單向驗證。如果有需要雙向驗證的也需要重寫這個方法,以實現(xiàn)雙向驗證。(雙向驗證在銀行類等app中使用的較多)

在該方法中使用自簽名證書可能會出現(xiàn)的一個問題就是

復(fù)制代碼 代碼如下:

[pinnedCertificates addObject:(__bridge_transfer id)SecCertificateCreateWithData(NULL, (__bridge CFDataRef)certificateData)];

這行代碼有可能數(shù)組中添加了nil,即自簽名證書沒有獲取到。

解決方法:

  1. 將后端發(fā)過來的.crt證書,修改后綴.cer,導(dǎo)入鑰匙串。
  2. 再從鑰匙串導(dǎo)出該證書,拉到項目里直接使用

其本質(zhì)原因是后端的自簽名證書需要進(jìn)行base64反編碼才能使用。

總結(jié)語:

通過對自簽名證書這塊的研究,對https有了更加深入、更深刻的認(rèn)識,同時對AFNetworking中AFSecurityPolicy的源碼進(jìn)行了閱讀和理解。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • iOS App開發(fā)中導(dǎo)航欄的創(chuàng)建及基本屬性設(shè)置教程

    iOS App開發(fā)中導(dǎo)航欄的創(chuàng)建及基本屬性設(shè)置教程

    這篇文章主要介紹了iOS App開發(fā)中導(dǎo)航欄的創(chuàng)建及基本屬性設(shè)置教程,即用UINavigationController來編寫navigation,示例代碼為Objective-C語言,需要的朋友可以參考下
    2016-02-02
  • Objective-C基礎(chǔ) 自定義對象歸檔詳解及簡單實例

    Objective-C基礎(chǔ) 自定義對象歸檔詳解及簡單實例

    這篇文章主要介紹了Objective-C基礎(chǔ) 自定義對象歸檔詳解及簡單實例的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • iOS實現(xiàn)數(shù)字倍數(shù)動畫效果

    iOS實現(xiàn)數(shù)字倍數(shù)動畫效果

    在iOS開發(fā)中,制作動畫效果是最讓開發(fā)者享受的環(huán)節(jié)之一,下面這篇文章主要給大家介紹了關(guān)于iOS實現(xiàn)數(shù)字倍數(shù)動畫效果的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • 總結(jié)iOS實現(xiàn)漸變顏色的三種方法

    總結(jié)iOS實現(xiàn)漸變顏色的三種方法

    這篇文章主要給大家總結(jié)了iOS實現(xiàn)漸變顏色的三種方法,分別是利用CAGradientLayer實現(xiàn)漸變、Core Graphics相關(guān)方法實現(xiàn)漸變以及用CAShapeLayer作為layer的mask屬性實現(xiàn),大家可以根據(jù)自己的需要選擇使用,下面來一起看看吧。
    2016-10-10
  • iOS 11 使用兩種方法替換(Method Swizzling)去掉導(dǎo)航欄返回按鈕的文字

    iOS 11 使用兩種方法替換(Method Swizzling)去掉導(dǎo)航欄返回按鈕的文字

    這篇文章主要介紹了iOS 11 使用方法替換(Method Swizzling)去掉導(dǎo)航欄返回按鈕的文字,需要的朋友可以參考下
    2018-05-05
  • iOS實現(xiàn)自定義日期選擇器示例

    iOS實現(xiàn)自定義日期選擇器示例

    本篇文章主要介紹了iOS實現(xiàn)自定義日期選擇器示例,可以顯示年月日時分,非常具有實用價值,需要的朋友可以參考下。
    2017-02-02
  • iOS tableview實現(xiàn)頂部拉伸效果

    iOS tableview實現(xiàn)頂部拉伸效果

    這篇文章主要為大家詳細(xì)介紹了iOS tableview實現(xiàn)頂部拉伸效果,以及頭部拉伸效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • iOS AFNetworking中cookie重定向代碼

    iOS AFNetworking中cookie重定向代碼

    這篇文章主要介紹了iOS AFNetworking中cookie重定向代碼的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-09-09
  • IOS 時間和時間戳之間轉(zhuǎn)化示例

    IOS 時間和時間戳之間轉(zhuǎn)化示例

    我們經(jīng)常從服務(wù)器后臺拿到時間戳的時間,以下代碼可以實現(xiàn)將時間戳轉(zhuǎn)為可讀的時間格式,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-01-01
  • iOS通過http post上傳圖片

    iOS通過http post上傳圖片

    這篇文章主要介紹了iOS通過http post上傳圖片的相關(guān)資料,需要的朋友可以參考下
    2016-03-03

最新評論