Https適配

前言

iOS 9 開始揭保,蘋果就引入App Transport Security (ATS)谆棺,iOS9.0SDK在編譯的時候,默認所有從NSURLConnection暂氯、CFURL和NSURLSession發(fā)出的http請求潮模,都改為https請求。由于AFNetworking版本底層是用了NSURLConnection痴施,所以使用AFNetworking的app都將受到影響擎厢。但是我們可以通過以下三種方案解決

方案一:

讓服務器更新(最佳),因為繼續(xù)使用http辣吃,可能存在竊聽动遭、篡改、冒充的風險神得,而更新使用https協(xié)議后厘惦。將避免這些風險,但是代價比較大..<( ̄3 ̄)>

方案二:

在Info.plist中添加 NSAppTransportSecurity 類型 Dictionary 哩簿。
在 NSAppTransportSecurity下添加 NSAllowsArbitraryLoads 類型 Boolean ,值設為 YES

使用這一方法繞過了蘋果的ATS宵蕉,但是終究不是解決之道,在之后iOS 10推出之后节榜,蘋果官方明確表示2017/01/01開始上架的應用羡玛,均要求使用https協(xié)議,通過AllowsArbitraryLoads 置為YES繞過ATS的應用會被拒宗苍。

方案三:

將訪問的域名稼稿,加入白名單
1.在info.plist中增加一個key:NSAppTransportSecurity,類型為字典類型讳窟。
2.然后添加一個NSExceptionDomains渺杉,其類型是字典類型。
3.把需要支持的域給添加到NSExceptionDomains里挪钓,其中域作為key,類型為字典類型耳舅。
4.每個域下面需要設置3個屬性碌上,分別為NSIncludesSubdomains、NSExceptionRequiresForwardSecrecy浦徊、NSExceptionAllowsInsecureHTTPLoads馏予,均為Boolean類型,其值分別為YES盔性,NO霞丧,YES。

技術分享

新浪微博的域:weibo.com冕香、weibo.cn蛹尝、sina.com.cn后豫。微信的域:qq.com。QQ/QZone的域:qq.com

在AFNetworking 對數(shù)據(jù)進行https ssl加密

web服務器提供crt證書突那,在項目中使用的是cer證書挫酿,so,需要進行轉換

1.使用openssl 進行轉換
openssl x509 -in 你的證書.crt -out 你的證書.cer -outform der

2.通過安裝crt文件愕难,電腦導出
使用鑰匙串安裝.crt證書早龟,在導出為.cer證書

使用https ssl加密

第一步:新增一個類 獲取證書

+ (AFSecurityPolicy*)customSecurityPolicy{ 
// /先導入證書
 NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"yourcer" ofType:@"cer"];
//證書的路徑
 NSData *certData = [NSData dataWithContentsOfFile:cerPath]; 
// AFSSLPinningModeCertificate使用證書驗證模式 
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate]; 
// allowInvalidCertificates 是否允許無效證書(也就是自建的證書),默認為NO
// 如果是需要驗證自建證書猫缭,需要設置為YES securityPolicy.allowInvalidCertificates = YES;
//validatesDomainName 是否需要驗證域名葱弟,默認為YES; 
//假如證書的域名與你請求的域名不一致猜丹,需把該項設置為NO芝加;如設成NO的話,即服務器使用其他可信任機構頒發(fā)的證書居触,也可以建立連接妖混,這個非常危險,建議打開轮洋。 //置為NO制市,主要用于這種情況:客戶端請求的是子域名,而證書上的是另外一個域名弊予。因為SSL證書上的域名是獨立的祥楣,假如證書上注冊的域名是www.google.com,那么mail.google.com是無法驗證通過的汉柒;當然误褪,有錢可以注冊通配符的域名*.google.com,但這個還是比較貴的碾褂。
//如置為NO兽间,建議自己添加對應域名的校驗邏輯。 
securityPolicy.validatesDomainName = NO; 
securityPolicy.pinnedCertificates = @[certData];
 return securityPolicy;
}

第二步:直接在請求方法里加入正塌,只有一行代碼

+ (void)post:(NSString *)url params:(NSDictionary *)params success:(void (^)(id))success failure:(void (^)(NSError *))failure{ 
// 1.獲得請求管理者
 AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
 // 2.申明返回的結果是text/html類型 
mgr.responseSerializer = [AFHTTPResponseSerializer serializer];
 // 加上這行代碼嘀略,https ssl 驗證。 
//[mgr setSecurityPolicy:[self customSecurityPolicy]]; 
// 3.發(fā)送POST請求
 [mgr POST:url parameters:params success:^(AFHTTPRequestOperation *operation, id responseObj) {
 if (success)
 {
 success(responseObj);
 }
 } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
 if (failure)
 {
 failure(error); 
  }
 }];}

接下來抓包抓出來的數(shù)據(jù)乓诽,都已經(jīng)加密了帜羊。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市鸠天,隨后出現(xiàn)的幾起案子讼育,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奶段,死亡現(xiàn)場離奇詭異饥瓷,居然都是意外死亡,警方通過查閱死者的電腦和手機忧饭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門扛伍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人词裤,你說我怎么就攤上這事刺洒。” “怎么了吼砂?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵逆航,是天一觀的道長。 經(jīng)常有香客問我渔肩,道長因俐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任周偎,我火速辦了婚禮抹剩,結果婚禮上,老公的妹妹穿的比我還像新娘蓉坎。我一直安慰自己澳眷,他們只是感情好,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布蛉艾。 她就那樣靜靜地躺著钳踊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪勿侯。 梳的紋絲不亂的頭發(fā)上拓瞪,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天,我揣著相機與錄音助琐,去河邊找鬼祭埂。 笑死,一個胖子當著我的面吹牛兵钮,可吹牛的內容都是我干的沟堡。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼矢空,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了禀横?” 一聲冷哼從身側響起屁药,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎柏锄,沒想到半個月后酿箭,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體复亏,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年缭嫡,在試婚紗的時候發(fā)現(xiàn)自己被綠了缔御。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡妇蛀,死狀恐怖耕突,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情评架,我是刑警寧澤眷茁,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站纵诞,受9級特大地震影響上祈,放射性物質發(fā)生泄漏。R本人自食惡果不足惜浙芙,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一登刺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧嗡呼,春花似錦纸俭、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至矾瘾,卻和暖如春女轿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背壕翩。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工蛉迹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人放妈。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓北救,卻偏偏與公主長得像,于是被迫代替她去往敵國和親芜抒。 傳聞我的和親對象是個殘疾皇子珍策,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內容

  • 題外話: 在WWDC 2016中,蘋果宣布在今年年底應用提交到App Store將需要支持ATS宅倒,在2016年12...
    伯牙呀閱讀 1,075評論 0 5
  • 關于https的簡介和說明我都是參考下面的文章:(謝謝文章作者)1.http://my.oschina.net/v...
    LoveY34閱讀 14,595評論 61 53
  • 適配https 說明: 蘋果聲明從2017-01-01開始攘宙,所有提交的應用必須使用更安全的https協(xié)議。 因此,...
    倔犟的貝殼閱讀 1,400評論 0 2
  • 快速適配直接看下面的示例代碼吧蹭劈,概念有點多疗绣。。铺韧。 自己客戶端生成證書放在服務器上多矮,可以自簽服務器必須ca簽署,服務...
    _YZG_閱讀 10,930評論 0 56
  • 在WWDC 2016開發(fā)者大會上哈打,蘋果宣布了一個最后期限:到2017年1月1日 App Store中的所有應用都必...
    CoderSJun閱讀 3,530評論 7 8