麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 系統(tǒng) > iOS > 正文

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

2019-10-21 18:41:27
字體:
供稿:網(wǎng)友

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

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

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

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

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

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

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

// 自簽名證書在路徑NSString *certFilePath = [[NSBundle mainBundle] pathForResource:@"service" ofType:@"cer"];// 自簽名證書轉(zhuǎn)換成二進制數(shù)據(jù)NSData *certData = [NSData dataWithContentsOfFile:certFilePath];// 將二進制數(shù)據(jù)放到NSSet中NSSet *certSet = [NSSet setWithObject:certData];/* AFNetworking中的AFSecurityPolicy實例化方法  第一個參數(shù):  AFSSLPinningModeNone,  //不驗證  AFSSLPinningModePublicKey,   //只驗證公鑰  AFSSLPinningModeCertificate,   //驗證證書  第二個參數(shù):存放二進制證書數(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就是在這個方法中進行的單向驗證。如果有需要雙向驗證的也需要重寫這個方法,以實現(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ì)原因是后端的自簽名證書需要進行base64反編碼才能使用。

總結(jié)語:

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

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


注:相關(guān)教程知識閱讀請移步到IOS開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产自在线 | 韩国精品视频在线观看 | 久久毛片免费观看 | 日本人乱人乱亲乱色视频观看 | av在线看网站| 91av在线影院| 亚洲人成在线播放网站 | 中文字幕偷拍 | 欧美日本在线视频 | 日本欧美一区二区三区在线播 | 香蕉久草视频 | 欧美成人福利 | 91麻豆精品国产91久久久更新资源速度超快 | 蜜桃视频在线观看免费 | 国产精品一区二区羞羞答答 | 国产一区二区三区四区在线 | 精品一区二区三区在线播放 | 成人毛片在线免费观看 | 黄色高清免费网站 | 国产精品久久久久久久不卡 | 成人毛片视频免费看 | 欧美在线a | 欧美日韩在线视频一区 | 免费a级毛片永久免费 | 九九热精品免费视频 | 成人午夜在线观看视频 | 亚洲操比视频 | 狠狠撸电影 | 成人艳情一二三区 | www.777含羞草 | 羞羞视频免费视频欧美 | 国产一区二区精品91 | 天天躁狠狠躁夜躁2020挡不住 | 成片免费观看大全 | 思思久而久而蕉人 | 日韩午夜片| 久久99综合 | 欧美一级黄色网 | 午夜国产精品成人 | 美女被免费网站在线软件 | 99精品无人区乱码在线观看 |