一、假新聞如此猖獗
剛才一位老同事 打電話問:我們公司還是用的HTTP,馬上就到2017年了,提交AppStore會被拒絕,怎么辦?
公司里已經有很多人問過這個問題,回答一下: HTTP還是可以正常提交,不滿足 蘋果要求的 HTTPS 也可以正常提交。只需要修改下info.plist里的ATS配置。
另外,昨天(2016-12-21)蘋果發布聲明,ATS的適配規則往后延,時間還沒定。也就是現在,大家什么都不用改了。如果蘋果不出這個新聞,大家也不用適配HTTPS,因為蘋果規定的是禁止忽略ATS,這里是ATS不是HTTPS,這兩個是不一樣的,這個問題10月份已經打電話問過蘋果官方了。具體可以往下看。
以前寫過相關的文章:iOS的ATS配置 - 2017年前ATS規定的適配 。文章中也說過2017年1月1日后使用HTTP修改ATS配置即可。后來沒想到假新聞會傳播的如此瘋狂。
我們來看看這個假新聞是怎么快速傳播並忽悠大家的:新聞的起源是 蘋果開發者大會WWDC 2016上,蘋果首席安全架構師 Ivan提到的:2016年末ATS將成為所有應用程序上傳到AppStore 的要求。注意這里是ATS而不是HTTPS。
iOS開發人員都知道, 從iOS 9 ATS出來后,大家都喜歡用 Allow Arbitrary Loads 選項來忽略ATS。如果不忽略ATS,APP就會強制使用HTTPS。
當時WWDC 2016上Ivan說的是 從 2017 年 1 月 1 日起,所有的新提交 app 默認是不允許使用 NSAllowsArbitraryLoads
來繞過 ATS 限制。可以通過配置ATS來進行適配。
然而 網絡上的各種文章開始瘋狂的傳播假新聞:2017年1月1日起,必現用HTTPS才能通過審核!必現滿足蘋果對HTTPS證書和加密規則的要求!
剛開始是IT軟文,然后就是iOS開發人員在自己的博客里不斷傳播。好吧,說明很多人寫技術博客看到別人的觀點 也不進行驗證真假,直接拿來用。並且現在絕大多數的文章都是錯的,這個有點恐怖。。。
連大多數的技術文章說的都是假的,想想其他社會新聞,假的會更多吧。 媒體的力量可以控制你的認知,哪怕這個認知是錯的。
后來 在論壇中 蘋果官方人員也給出過解釋:What has changed is that App Review will require “reasonable justification” for most ATS exceptions. The goal here is to flush out those folks who, when ATS was first released, simply turned it off globally and moved on. That will no longer be allowed.
意思:不符合ATS要求的,需要進行說明理由。不能全局關閉ATS,即:不能再用NSAllowsArbitraryLoads了。
但是可以用ATS的Exception Domains屬性進行相關配置。只需要提交的時候說明下原因就可以了。
比如:HTTP請求、不滿足HTTPS要求的情況,如:TLS協議版本低、ForwardSecrecy算法不滿足規則。等,這些都可以進行配置。
另外,昨天的時候,蘋果發布了新消息:2017年1月1日,你可以繼續關閉ATS:
新聞地址:https://developer.apple.com/news/?id=12212016b
大體意思:為了給你們更多的時間來准備,這個最終期限已經延長,具體什么時間還沒定。
所以,現在大家現在 什么都不用修改了。。
當然,我們還是建議大家都升級到HTTPS。遲早的事情。
二、如何適配HTTPS
因為我們的APP已經適配了HTTPS了。現在還用HTTP 不安全,確實太low了(當然HTTPS也是可以被抓包破解的,見我的另一篇博客:逆向工程 - Reveal、IDA、Hopper、HTTPS抓包 等)。說下如何適配HTTPS吧:
1、更新sdk:友盟、個推 等,這些第三方sdk都已經適配HTTPS了,具體的更新和配置看官方文檔就好了。
2、域名如果 滿足蘋果HTTPS的規則,就不用配置,如果不滿足 還需要根據自己的情況配置,如:
3、我們的HTTPS是ForwardSecrecy不符合蘋果的要求,我們的運維也在積極的適配,如果用的nginx,可以直接在nginx中配置ssl_ciphers選項,我們公司用的 Red ware(類似F5,以色列的設備),就需要單獨配置了。
4、測試環境很多公司都是用IP地址訪問,這個時候如果不使用NSAllowsArbitraryLoads忽略ATS,在iOS9下是報錯的,iOS10沒問題。所以DEBUG環境還是要加上NSAllowsArbitraryLoads的,發布AppStore的時候去掉這個配置 就可以了。
5、騰訊雲提供了一個 蘋果ATS檢測的網頁,大家可以把自己的域名放上去試試。HTTPS的默認端口是443,看我們公司域名的測試結果:
我們當時適配HTTPS的時候 騰訊雲 還沒出這個檢測的網頁,我們是通過配置Xcode的ATS選項來確定是哪里不符合要求的。最后和騰訊雲的結果一直。
歡迎關注我的今日頭條號 名稱: 雲端夢想科技
歡迎關注我的微信公眾號:dreams2999