最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

整個(gè)https單向驗(yàn)證流程簡(jiǎn)單總結(jié)如下:

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

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

那么在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í)例化方法
  第一個(gè)參數(shù):
  AFSSLPinningModeNone,  //不驗(yàn)證
  AFSSLPinningModePublicKey,   //只驗(yàn)證公鑰
  AFSSLPinningModeCertificate,   //驗(yàn)證證書
  第二個(gè)參數(shù):存放二進(jìn)制證書數(shù)據(jù)的NSSet
*/
AFSecurityPolicy *policy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate withPinnedCertificates:certSet];
// shareManager 是繼承自AFHTTPSessionManager的一個(gè)類的實(shí)例對(duì)象
sharedManager.securityPolicy = policy;

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

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

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

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

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

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

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

解決方法:

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

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

總結(jié)語:

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

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

相關(guān)文章

  • iOS實(shí)現(xiàn)富文本編輯器的方法詳解

    iOS實(shí)現(xiàn)富文本編輯器的方法詳解

    大家在開發(fā)的時(shí)候經(jīng)常會(huì)用到富文本編輯器,所以這篇文章就給大家整理了如何使用iOS實(shí)現(xiàn)富文本編輯器的方法,相信本文對(duì)大家具有一定的參考借鑒價(jià)值,有需要的朋友們可以一起來看看。
    2016-10-10
  • IOS 照片編輯的view封裝的實(shí)例詳解

    IOS 照片編輯的view封裝的實(shí)例詳解

    這篇文章主要介紹了IOS 照片編輯的view封裝的實(shí)例詳解的相關(guān)資料,這里提供實(shí)例幫助大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-08-08
  • iOS表視圖之下拉刷新控件功能的實(shí)現(xiàn)方法

    iOS表視圖之下拉刷新控件功能的實(shí)現(xiàn)方法

    下拉刷新是重新刷新表視圖或列表,以便重新加載數(shù)據(jù),這種模式廣泛用于移動(dòng)平臺(tái),相信大家對(duì)于此也是非常熟悉的,那么iOS是如何做到的下拉刷新呢?下面小編給大家分享iOS表視圖之下拉刷新控件的實(shí)現(xiàn)方法,一起看看吧
    2017-01-01
  • iOS 9無法訪問HTTP的解決方法

    iOS 9無法訪問HTTP的解決方法

    這篇文章主要為大家詳細(xì)介紹了iOS 9無法訪問HTTP的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • iOS10語音識(shí)別框架SpeechFramework應(yīng)用詳解

    iOS10語音識(shí)別框架SpeechFramework應(yīng)用詳解

    在iOS10系統(tǒng)了,apple開放了與語音識(shí)別相關(guān)的接口,開發(fā)者可以將其應(yīng)用到自己的App中,實(shí)現(xiàn)用戶通過語音進(jìn)行功能操作。 這篇文章主要介紹了iOS10語音識(shí)別框架SpeechFramework應(yīng)用,需要的朋友可以參考下
    2016-09-09
  • IOS應(yīng)用內(nèi)支付返回新舊Receipt適配的方法

    IOS應(yīng)用內(nèi)支付返回新舊Receipt適配的方法

    本篇文章主要介紹了IOS應(yīng)用內(nèi)支付返回新舊Receipt適配的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-12-12
  • IOS 文件讀寫操作詳解及簡(jiǎn)單實(shí)例

    IOS 文件讀寫操作詳解及簡(jiǎn)單實(shí)例

    這篇文章主要介紹了IOS 文件讀寫操作詳解及簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • iOS系統(tǒng)的底層通知框架庫示例詳解

    iOS系統(tǒng)的底層通知框架庫示例詳解

    這篇文章主要給大家介紹了關(guān)于iOS系統(tǒng)的底層通知框架庫的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)各位iOS開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • iOS應(yīng)用中發(fā)送HTTP的get請(qǐng)求以及HTTP異步請(qǐng)求的方法

    iOS應(yīng)用中發(fā)送HTTP的get請(qǐng)求以及HTTP異步請(qǐng)求的方法

    這篇文章主要介紹了iOS應(yīng)用中發(fā)送HTTP的get請(qǐng)求以及HTTP異步請(qǐng)求的方法,代碼為傳統(tǒng)的Objective-C語言,說明都簡(jiǎn)單地融入于注釋之中,需要的朋友可以參考下
    2016-02-02
  • 實(shí)例解析設(shè)計(jì)模式中的外觀模式在iOS App開發(fā)中的運(yùn)用

    實(shí)例解析設(shè)計(jì)模式中的外觀模式在iOS App開發(fā)中的運(yùn)用

    這篇文章主要介紹了設(shè)計(jì)模式中的外觀模式在iOS App開發(fā)中的運(yùn)用,實(shí)例代碼為傳統(tǒng)的Objective-C,需要的朋友可以參考下
    2016-03-03

最新評(píng)論

永顺县| 自治县| 岢岚县| 同德县| 连云港市| 达拉特旗| 米林县| 元江| 南靖县| 钟山县| 泾源县| 梅河口市| 武穴市| 彭山县| 西和县| 莫力| 保定市| 敖汉旗| 文水县| 镶黄旗| 扎鲁特旗| 农安县| 南涧| 精河县| 张家口市| 布尔津县| 读书| 玛曲县| 县级市| 宣汉县| 栾城县| 平山县| 田阳县| 福清市| 岳普湖县| 蓝田县| 中方县| 林西县| 锦屏县| 海门市| 拉萨市|