iOS app 支持HTTPS iOS開發(fā)者究竟需要做什么红且?

2016年12月21日更新開發(fā)者中心鏈接
https://developer.apple.com/news/?id=12212016b
該鏈接是蘋果昨天剛在官網(wǎng)給的正式回復 如下:

App Transport Security (ATS), introduced in iOS 9 and OS X v10.11, improves user security and privacy by requiring apps to use secure network connections over HTTPS. At WWDC 2016 we announced that apps submitted to the App Store will be required to support ATS at the end of the year. To give you additional time to prepare, this deadline has been extended and we will provide another update when a new deadline is confirmed. Learn more about ATS.

這個東西是為了讓大家放心 17年1月1日 不是蘋果最終的deadline 推遲了跃赚,下面的步驟是iOS前端適配https 的全部步驟 按照步驟配置即可(不要再被網(wǎng)上傳的強制https的文章洗腦了瞄摊,都是ssl證書頒發(fā)機構(gòu)的軟文)

自從2016年的WWDC大會結(jié)束后别凤,就出來個消息說,蘋果方面在2017年1月1日要開始全面支持https了川背,也就是說原來繞過ATS的方法不行了贰拿。沒有取巧的方式那就只能按照正規(guī)的流程來一遍了蛤袒,這幾天把這個坑搞明白了熄云,其實整個過程前端并不需要做太多東西,但是我還是把整個流程熟悉了一遍妙真,這樣也算是蘋果做的一個強制缴允,為整個安全領(lǐng)域推進了一步。

剛開始我也是在網(wǎng)上找了一些教程珍德,但是最后感覺網(wǎng)上的這些流程都或多或少有些問題练般,而且并不能告訴app前端開發(fā)他們到底需要做什么,畢竟大家都是剛開始走這個坑锈候,對這個都不算太了解薄料。所以我把做適配的這段時間走的坑總結(jié)一下。

對于HTTPS和HTTP的對比泵琳,本篇就不再作講解摄职,因為網(wǎng)上有大量的對比,簡單的來說获列,HTTPS相對于HTTP更安全谷市,更安全的原因就來自于多出來這個S----SSL證書

大致適配流程

(1)這里先說整個過程的大體流程,如果你們的公司有運維的同學在击孩,那么先讓運維的同學去看一下正規(guī)大廠用的是什么類型的SSL證書迫悠,額外說一下,現(xiàn)在很多網(wǎng)上有一些免費的證書巩梢,還有國內(nèi)的一些廠商是比較便宜的證書创泄,我不太建議去買這些,因為畢竟這次適配就是為了安全括蝠,不如一步到位验烧。這里就不再介紹自簽名一類的了,自簽名并沒有提升真正的安全度又跛,算是模擬了簽名的過程碍拆。
(2)證書申請成功后,需要后臺的同學配置一下證書,將SSL證書綁定到后臺服務上感混。
(3)前兩步不需要前端的同學完成端幼,前兩步完成后,前端的同學才拿到對應的證書去做前端的適配弧满。如果你們的項目本身就有網(wǎng)絡請求管理類婆跑,那么只需要對管理類相關(guān)的代碼進行修改就行了,如果沒有庭呜,那就需要先封裝一個網(wǎng)絡請求管理類滑进,然后替換之前的所有網(wǎng)絡請求方法(這個過程是反人類的,真希望你用不到這個辦法)

iOS app前端詳細適配流程

先說一下單向認證和雙向認證的區(qū)別:單向認證只要求站點部署了ssl證書就行募谎,任何用戶都可以去訪問(IP被限制除外等)扶关,只是服務端提供了身份認證。而雙向認證則是需要是服務端需要客戶端提供身份認證数冬,只能是服務端允許的客戶能去訪問节槐,安全性相對于要高一些。

其實網(wǎng)上之前我查資料的時候已經(jīng)發(fā)現(xiàn)了拐纱,大部分網(wǎng)上的認證都是雙向認證铜异,但是他們都錯誤的理解其為單向認證了。下面說一下app單向認證具體需要做什么秸架。

單向驗證

//在你封裝的網(wǎng)絡工具類請求前初始化時增加以下代碼
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
//設置證書模式揍庄,AFSSLPinningModeNone,代表前端包內(nèi)不驗證
//在單向認證時东抹,前端不放證書蚂子,服務器去驗證
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
// 如果是需要服務端驗證證書,需要設置為YES
securityPolicy.allowInvalidCertificates = YES;
//validatesDomainName 是否需要驗證域名府阀,默認為YES缆镣;
securityPolicy.validatesDomainName = NO;
//設置驗證模式
manager.securityPolicy = securityPolicy;

雙向驗證

雙向驗證的過程我就不說了,因為網(wǎng)上基本全部是雙向認證试浙,需要把證書打包到應用的包里董瞻,這里貼一個比較詳細的鏈接http://www.reibang.com/p/f312a84a944c

這里只把最關(guān)鍵的代碼跟單向認證做一個對比

//在你封裝的網(wǎng)絡工具類請求前初始化時增加以下代
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
//設置驗證證書,該模式下許愿把證書打包進項目里田巴,進行驗證
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
//證書的路徑
NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"xxx" ofType:@".cer"];
NSData *dataSou = [NSData dataWithContentsOfFile:cerPath];
NSSet *set = [NSSet setWithObjects:dataSou, nil];
securityPolicy.allowInvalidCertificates = YES;
securityPolicy.validatesDomainName = YES;
[securityPolicy setPinnedCertificates:set];
//將驗證方式賦值給管理者
manager.securityPolicy = securityPolicy;

兩類驗證方式的最大區(qū)別其實在于钠糊,是否需要把證書打包進入應用內(nèi)。
跟著這個問題隨之而來的就有另外的幾個問題壹哺,對于app前端開發(fā)來說抄伍,究竟選擇何種驗證方式比較好呢。其實對于app來說管宵,單向驗證是最方便的截珍,也是安全的攀甚,雙向驗證比單向來說更安全,但是對于app開發(fā)來說有幾個問題需要面對岗喉。所以下面列一下單向和雙向的優(yōu)點和缺點秋度,你可以選擇最合適的方式來處理。

單向優(yōu)點

1.更加靈活钱床,客戶端不需要把相應證書打包進入app內(nèi)荚斯,這個SSL證書是有過期時間的,如果過期了查牌,只需要服務器端修改證書即可事期,不會出現(xiàn)突然有一天莫名其妙app打不開了的問題。
2.雖然兩種驗證方法對于前端來說并沒有太多工作了纸颜,但是相對來說單向?qū)τ诜斩撕颓岸藖碚f更簡單兽泣。

雙向優(yōu)點

1.更加安全。但是相對來說開發(fā)成本更高

對比之后懂衩,我們的app最終選擇單向驗證的方式撞叨。更多的是為了避免如果修改了證書的廠家這種意外事件的處理金踪,避免不必要的麻煩浊洞。

總結(jié)

其實對于前端來說,并沒有太多的工作量胡岔,重點是對于整個過程的理解和方式的選擇法希。所以也不要害怕17年的全面https的問題。

下面是我自己個人的疑問靶瘸,因為不確定明年的plist里面的ATS是不是在提交應用的時候Allow Arbitrary Loads是不是必須不要設置或者設置為NO,所以我在前幾天向蘋果開發(fā)者中心發(fā)了一個郵件苫亦,得到的結(jié)果真是出人意料

開發(fā)者中心郵件.png

這個回復真是哭笑不得,一邊提倡https 一邊說現(xiàn)在還沒有對開發(fā)者做限制怨咪。不過管他呢屋剑,https是一個趨勢,先做了诗眨,一步到位就行唉匾,明年的Allow Arbitrary Loads 照樣上傳應用的時候設置YES了,17年1月1日到底蘋果是不是強制要求不讓這么繞過匠楚,也不能確定巍膘。

這個坑過去了,但是ATS是對UIWebView和WKWebView有影響的芋簿,如果Allow Arbitrary Loads設置為NO, Allow Arbitrary Loads in Web Content不設置峡懈,那么UIWebView和WKWebView不能正常的顯示,因為加載網(wǎng)頁也是需要基于http和https協(xié)議的与斤。所以需要將Allow Arbitrary Loads in Web Content設置為YES肪康。

這塊的問題都在摸索荚恶,如果有我與理解不到位的地方,希望能在評論中給我提意見磷支,謝謝裆甩,互相學習。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末齐唆,一起剝皮案震驚了整個濱河市嗤栓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌箍邮,老刑警劉巖茉帅,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異锭弊,居然都是意外死亡堪澎,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門味滞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來樱蛤,“玉大人,你說我怎么就攤上這事剑鞍∽蚍玻” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵蚁署,是天一觀的道長便脊。 經(jīng)常有香客問我,道長光戈,這世上最難降的妖魔是什么哪痰? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮久妆,結(jié)果婚禮上晌杰,老公的妹妹穿的比我還像新娘。我一直安慰自己筷弦,他們只是感情好肋演,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著奸笤,像睡著了一般惋啃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上监右,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天边灭,我揣著相機與錄音,去河邊找鬼健盒。 笑死绒瘦,一個胖子當著我的面吹牛称簿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播惰帽,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼憨降,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了该酗?” 一聲冷哼從身側(cè)響起授药,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎呜魄,沒想到半個月后悔叽,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡爵嗅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年娇澎,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片睹晒。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡趟庄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出伪很,到底是詐尸還是另有隱情戚啥,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布是掰,位于F島的核電站虑鼎,受9級特大地震影響辱匿,放射性物質(zhì)發(fā)生泄漏键痛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一匾七、第九天 我趴在偏房一處隱蔽的房頂上張望絮短。 院中可真熱鬧,春花似錦昨忆、人聲如沸丁频。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽席里。三九已至,卻和暖如春拢驾,著一層夾襖步出監(jiān)牢的瞬間奖磁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工繁疤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留咖为,地道東北人秕狰。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像躁染,于是被迫代替她去往敵國和親鸣哀。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345

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

  • 蘋果公司在2016的開發(fā)者大會上宣布:到2017年吞彤,所有的iOS應用都必須使用HTTPS與服務器進行通信我衬。iOS開...
    LanWor閱讀 352評論 0 1
  • 快速適配直接看下面的示例代碼吧,概念有點多饰恕。低飒。。 自己客戶端生成證書放在服務器上懂盐,可以自簽服務器必須ca簽署褥赊,服務...
    _YZG_閱讀 10,917評論 0 56
  • 提出問題 蘋果公司在2016的開發(fā)者大會上宣布:到2017年,所有的iOS應用都必須使用HTTPS與服務器進行通信...
    街角仰望閱讀 1,263評論 0 1
  • 經(jīng)過磨練的男人才會成熟 成熟的人意味著他找到了自我莉恼,并很好的處理了自我與外界的關(guān)系拌喉。有沒有自我,如何對待自我俐银,是衡...
    嚒嚒噠閱讀 595評論 0 1
  • 早上上班捶惜,韓同學告訴我工長讓我以后管380D的庫田藐。當?shù)玫竭@個消息時,有點擔心吱七,怕出什么岔子汽久。怕給大家添麻煩。 好吧...
    小魚記事錄閱讀 180評論 0 0