AFNetWorking 3.0與服務(wù)端 自簽名證書 https單向認(rèn)證

? ? ? ? 從6月的WWDC起就流傳著2017年1月1日蘋果要強(qiáng)制HTTPS的消息,當(dāng)時(shí)忙于開發(fā)哪管的了這么多球恤,現(xiàn)在臨近年末,移動(dòng)端和服務(wù)端配置HTTPS的需求也提上了日程。

? ? ? ? 如果服務(wù)器已經(jīng)配好了CA證書皂岔,不管是NSURL還是AFNetWorking,直接修改Define里的HTTP為HTTPS就行展姐。而因?yàn)楦鞣N原因躁垛,只能用服務(wù)端自簽名證書的,其實(shí)也不難圾笨。當(dāng)然如果服務(wù)端不了解蘋果機(jī)制教馆,安卓端也沒這類需求,那就只能百度了(雖說在IT行業(yè)里谷歌擂达、StackOverFlow才是政治正確...)

? ? ? ? 隨手百度一下關(guān)鍵詞土铺,iOS、HTTPS、AF 悲敷、證書究恤,要么是做廣告的,要么是幾年前的老帖子后德,不過經(jīng)過我整整一天的挨個(gè)測(cè)試丁溅,總算找到一個(gè)完美解決AFNetWorking3.0下,通過自簽名證書與單向認(rèn)證的服務(wù)端進(jìn)行HTTPS請(qǐng)求的辦法探遵。

? ? ? ?就在昨天窟赏,onevcat大神更新了iOS10下蘋果最新的HTTPS的需求,關(guān)于 iOS 10 中 ATS 的問題?箱季,同時(shí)也解決了我的一個(gè)疑問涯穷,那就是明年初,蘋果可能通過嚴(yán)格限制ATS的開關(guān)來強(qiáng)制HTTPS藏雏,而不是通過簡(jiǎn)單的校驗(yàn)HTTP前綴拷况。也就是說一些取巧的辦法,在沒有自簽名證書的情況下掘殴,一旦關(guān)閉ATS赚瘦,就只能GG了。

? ? ? ?廢話不多說奏寨,完美解決方案來自于 @天空中的球 前輩起意,相關(guān)帖子是iOS 中 AFNetworking HTTPS 的使用

簡(jiǎn)單總結(jié)就是咱們自力更生,不用向服務(wù)端要什么證書(因?yàn)樗麄兇虬鰜淼牟灰欢ㄊ嵌M(jìn)制文件)病瞳,通過終端(只用把www.google.com改成接口前綴就行揽咕,記著先cd到Desktop)

openssl s_client -connect www.google.com:443 /dev/null | openssl x509 -outform DER > https.cer

直接獲取Cer,然后拖進(jìn)程序套菜,添加以下代碼亲善。

NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"https" ofType:@"cer"];

NSData *certData = [NSData dataWithContentsOfFile:cerPath];

//AFSSLPinningModeCertificate 使用證書驗(yàn)證模式

AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];

//allowInvalidCertificates 是否允許無(wú)效證書(也就是自建的證書),默認(rèn)為NO

//如果是需要驗(yàn)證自建證書逗柴,需要設(shè)置為YES

securityPolicy.allowInvalidCertificates = YES;

securityPolicy.validatesDomainName = NO;

NSSet *set = [[NSSet alloc] initWithObjects:certData, nil];

securityPolicy.pinnedCertificates = set;

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

manager.requestSerializer = [AFJSONRequestSerializer serializer];

manager.responseSerializer=[AFJSONResponseSerializer serializer];

manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];

[manager setSecurityPolicy:securityPolicy];

然后去Plist里關(guān)閉ATS蛹头,在Define里把HTTP改為HTTPS,接著運(yùn)行程序戏溺,接口沒問題就大功告成了(當(dāng)然前提是服務(wù)端支持HTTPS)

另外在測(cè)試過程中遇到瘋狂崩潰的問題渣蜗,雖然提示是

[__NSArrayM insertObject:atIndex:]: object cannot be nil

其實(shí)跟數(shù)組越界半毛錢關(guān)系沒有,就是證書的問題于购,直接從終端自己生成就行袍睡。

如果服務(wù)端開了雙向認(rèn)證知染,那么可以看看這位大神的帖子?AFNetworking 3.0與服務(wù)端 自簽名證書 https雙向認(rèn)證


在簡(jiǎn)書的第一帖肋僧,如果還有問題歡迎留言討論,非常感謝~


參考

iOS 中 AFNetworking HTTPS 的使用

關(guān)于 iOS 10 中 ATS 的問題

AFNetworking 3.0與服務(wù)端 自簽名證書 https雙向認(rèn)證

iOS 適配https(AFNetworking3.0為例)

iOS9 使用自簽證證書實(shí)現(xiàn)HTTPS

iOS開發(fā)中的HTTPS

iOS-網(wǎng)絡(luò)基礎(chǔ)及應(yīng)用-Https

蘋果從17年元旦開始強(qiáng)制要求HTTPS?!官方表示你們誤會(huì)了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末嫌吠,一起剝皮案震驚了整個(gè)濱河市止潘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌辫诅,老刑警劉巖凭戴,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異炕矮,居然都是意外死亡么夫,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門肤视,熙熙樓的掌柜王于貴愁眉苦臉地迎上來档痪,“玉大人,你說我怎么就攤上這事邢滑「” “怎么了?”我有些...
    開封第一講書人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵困后,是天一觀的道長(zhǎng)乐纸。 經(jīng)常有香客問我,道長(zhǎng)摇予,這世上最難降的妖魔是什么汽绢? 我笑而不...
    開封第一講書人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮侧戴,結(jié)果婚禮上庶喜,老公的妹妹穿的比我還像新娘。我一直安慰自己救鲤,他們只是感情好久窟,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著本缠,像睡著了一般斥扛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上丹锹,一...
    開封第一講書人閱讀 52,328評(píng)論 1 310
  • 那天稀颁,我揣著相機(jī)與錄音,去河邊找鬼楣黍。 笑死匾灶,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的租漂。 我是一名探鬼主播阶女,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼颊糜,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了秃踩?” 一聲冷哼從身側(cè)響起衬鱼,我...
    開封第一講書人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎憔杨,沒想到半個(gè)月后鸟赫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡消别,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年抛蚤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寻狂。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡霉颠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出荆虱,到底是詐尸還是另有隱情蒿偎,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布怀读,位于F島的核電站诉位,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏菜枷。R本人自食惡果不足惜苍糠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望啤誊。 院中可真熱鬧岳瞭,春花似錦、人聲如沸蚊锹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)牡昆。三九已至姚炕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間丢烘,已是汗流浹背柱宦。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留播瞳,地道東北人掸刊。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像赢乓,于是被迫代替她去往敵國(guó)和親忧侧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子石窑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容