亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

https協議升級

2019-11-09 18:05:35
字體:
來源:轉載
供稿:網友

發現一篇好文章,小小修改記錄下 原文地址:http://www.jianshu.com/p/b03ae4a1a2d3

 關于https的簡介和說明我都是參考下面的文章:(謝謝文章作者)

1.http://my.oschina.net/vimfung/blog/494687

2.http://oncenote.com/2014/10/21/Security-1-HTTPS/ 

3.http://blog.csdn.net/dachao_me/article/details/48624685?ref=myread

最新消息:蘋果關于接入https的截止時間被延期了,具體截止時間尚未定,蘋果推遲https接入截止時間,小伙伴們!別太著急了!

https的說明我就不多說了,想要了解詳細內容查看上面的鏈接,很多專業名詞我也不是很明白,只后悔大學的時候關于網絡工程等一些課程沒有好好聽吧!我寫這篇文章主要是為了iOS工程中http轉化為https的教程。

1.修改info.plist中不安全的http兼容配置

           目前絕大多數工作為了解決https的問題,直接在info.plist中添加配置使得系統的請求類NSURLsession(NSURLConnection)默認的請求方式從https轉化為http,

注意:加了這個配置后,http和https都是兼容的,如果是https請求,會繼續走https,是http請求會繼續走http

配置如下:

這種方法只能說治標不治本,再說蘋果公司也做出了規定2017年上架的app必須使用https不然可能無法通過審核,所以為了適配https的第一步就是刪除這個配置,講默認請求方式設置成https。刪除后再次啟動程序會發現請求全部失敗,這個錯誤相信大家都很熟悉,沒錯就是因為服務器不支持https導致的。

2.使用系統的NSURLSession(NSURLConnection)或者第三方的請求框架(AFNetworking)實現https適配

      我項目中使用的是AFNetworking 3.1,所以我先利用AFNetworking做適配(其實AFNetworking的https適配還是利用NSURLSession(NSURLConnection)做的適配,只不過NSURLSession(NSURLConnection)適配有點麻煩,AFNetworking的適配更加簡單),原本的manager初始化不變,只不過需要為manager的securityPolicy設置值(不好意思哦!不知道怎么樣才能添加規范的代碼,只能用截圖來代替了)。

添加完成之后還是出現上面的問題:

檢查后發現請求的路徑不對,之前都是http,忘記改成https了(請求的路徑一定要跟服務器開發人員確定好了),修改完成后還是報錯,抓狂??!還是很奇葩的錯誤,請求被取消了,錯誤碼-999,

找了很多資料才發現還需要站點證書,上面請求失敗可能是因為ssl第一次握手的時候驗證沒通過,然后就直接被取消了。所以這時候就需要獲取站點的證書,獲取的方法有兩種:

1.通過openssl命令獲取,命令如下(以百度為例):

openssl s_client -connect www.baidu.com:443 </dev/null 2>/dev/null | openssl x509 -outform DER > https1.cer

這個命令的目的就是直接在你的終端打開的當前目錄下面下載某一站點的證書,但是我怎么都獲取不到下載的證書都是空的,而且終端還報錯,找不到錯誤的原因,沒辦法只能用第二種辦法了

2.直接在瀏覽器中打開項目的任意一個接口的完整路徑,如果你服務器支持https的話會在鏈接的前面出現一個小鎖的圖標(我使用的是safair瀏覽器),點擊小鎖會出現提示點擊顯示證書就會出現站點證書的信息了(以百度為例),點擊證書的圖標到桌面上就可以把證書下載到桌面上了,這樣就獲取到站點證書了(這種方式不知道會不會存在啥問題,但是到目前為止我沒遇到啥問題)

獲取到證書后把證書放到項目的mainbundle中,并用代碼獲取

這時候再跑起來,接口都能獲取到數據了,成功了,不過到這里大家不知道會不會存在疑問,證書這么容易獲取到,那別人獲取了怎么辦?就算用抓包工具攔截了請求里面的內容都是加密的,但是別人可以利用證書向我們服務器發請求的,是不是也存在點問題呢?這個問題我到現在還不是很明白,有的資料說這樣獲取的證書是公鑰,沒有私鑰的話也是白費力氣。

3.由于iOS做https適配的時候對服務器是有要求的(一個符合 ATS 要求的 HTTPS),所以出了問題也不一定是客戶端的問題

       其實上面成功了,但是還有很多概念不是很清楚,例如啥叫ATS(App Transport Security),它跟https有啥關系呢?

      App Transport Security(簡稱ATS)特性, 主要使到原來請求的時候用到的HTTP,都轉向TLS1.2協議進行傳輸。這也意味著所有的HTTP協議都強制使用了HTTPS協議進行傳輸,ATS是在iOS 9.0 和 OS X v10.11版本中增加的特性,使用iOS 9.0或者OS X v10.11的SDK版本(或更新的SDK)進行編譯應用時會默認啟動ATS。則需要對ATS進行配置。如果使用iOS 9.0或者OS X v10.11之前的SDK版本編譯的應用默認是禁止ATS的,因此不會影響應用的網絡連接方面的功能(即使在iOS 9.0的機子上跑也是不影響的)。其實ATS并不單單針對HTTP進行了限制,對HTTPS也有一定的要求:

首先頒發給服務器證書的證書機構(CA)的根證書必須是內置于操作系統(哪些根證書被信任可以查看https://support.apple.com/zh-cn/HT205205,或者在你的機子的設置-通用-關于本機最下面的“進一步了解被信任的證書”中查看,百度的CA根證書:)或者受用戶或者系統管理員信任并安裝到操作系統上的。而且必須要基于TLS 1.2版本協議(以百度為例,最好使用Chrome瀏覽器,其他的瀏覽器我沒找到查看TSL協議的版本號)。再來就是連接的加密方式要提供Forward Secrecy(FS正向保密,感興趣的筒子可以看看這個https://vincent.bernat.im/en/blog/2011-ssl-perfect-forward-secrecy.html,--!已經打不開了,支持Forward Secrecy的加密方式

TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384

TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256

TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384

TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA

TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256

TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA

TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384

TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256

TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

),文檔中羅列出了支持的加密算法(上面的原文中有說明,我把它獨立抽出來放到下面表格中查看)。最后就是證書至少要使用一個SHA256的指紋與任一個2048位或者更高位的RSA密鑰,或者是256位或者更高位的ECC密鑰。如果不符合其中一項,請求將被中斷并返回nil,簡單的說就是下面幾個要求:

1.Transport Layer Security協議版本要求TLS1.2以上

2.服務的Ciphers配置要求支持Forward Secrecy等

3.證書簽名算法符合ATS要求等

以上就是一次排查服務器的https是否符合ATS規格的方法,當然也可以使用下面的命令行一次性查詢:輸出結果都是pass的話就說明鏈接是支持ATS的。

nscurl --ats-diagnostics --verbose https://www.baidu.com

4.由于很多第三方的請求尚未適配https,所以iOS的ATS規格又分為四大類

1.HTTPS Only (只有HTTPS,所有情況下都使用ATS)

顧名思義,這種情況不需要針對某一個域名或者站點做特殊處理,只要服務器的https符合ATS規格就可以了

2.Mix & Match(混合)

這種類型主要某些第三方的請求不支持https或者支持的https不符合ATS的情況:

2.1 在info.plist中添加這個配置項后,ATS當與這個子域交互的時候撤銷了必須使用HTTPS的要求(以友盟為例)

2.2 當你請求的第三方服務器支持了https,但是不符合ATS規格,例如SSL版本低于1.2或者FS加密不符合要求的時候,可以做如下配置:

2.3 NSIncludesSubdomains 關鍵字告訴 App Transport Security 這個“例外”(Exception)適用于這個特定域名的所有子域。這個“例外”(Exception)還進一步通過擴展可接受的密碼列表來定義這個域名可以使用不支持forward secrecy( NSExceptionRequiresForwardSecrecy ) 協議的密碼。想了解更多關于forward secrecy的信息,推薦去看官方文檔 Apple's tech note

3. Opt Out(禁用ATS)

這個也是目前做法最廣泛的一種方式,把默認的請求的請求方式變成不安全的http,方法上面已經說過了。

4. Opt Out With Exceptions(除特殊情況外,都不使用ATS)

當你的應用撤消了App Transport Security,,但同時定義了一些“例外”(Exception),指定了一個或多個“例外”(Exception)來表明哪些是必須要求 App Transport Security的。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
一区二区三区无码高清视频| 国产一区二区激情| 91在线观看免费网站| 亚洲精品在线看| 97人洗澡人人免费公开视频碰碰碰| 国产一区二区免费| 亚洲丁香久久久| 欧美中文字幕视频在线观看| 欧美激情videos| 亚洲专区在线视频| 亚洲国产一区自拍| 81精品国产乱码久久久久久| 日韩欧美aⅴ综合网站发布| 日韩欧美高清在线视频| 久久久久久国产精品| 精品日本高清在线播放| 欧美激情精品久久久久久久变态| 夜夜躁日日躁狠狠久久88av| 欧美亚洲午夜视频在线观看| 91精品国产91久久久久福利| 中文字幕自拍vr一区二区三区| 国产美女久久久| 欧美视频一区二区三区…| 国产免费一区二区三区在线能观看| 亚洲成人激情图| 成人激情在线观看| 日韩精品在线视频| 国产精品欧美一区二区三区奶水| 亚洲一区国产精品| 精品欧美aⅴ在线网站| 久久99久国产精品黄毛片入口| 久久久久久久久久亚洲| 成人黄色生活片| 亚洲aⅴ日韩av电影在线观看| 欧美日本国产在线| 国产91网红主播在线观看| 日韩欧美极品在线观看| 日韩精品免费在线播放| 欧美老女人bb| 亚洲精品不卡在线| 欧美老少做受xxxx高潮| 美女999久久久精品视频| 欧美性在线观看| 日本午夜在线亚洲.国产| 亚洲精品动漫久久久久| 深夜福利亚洲导航| 91超碰caoporn97人人| 欧美一区二区三区免费视| 亚洲а∨天堂久久精品9966| 一区二区三区视频免费| 青青精品视频播放| 日韩久久午夜影院| 欧美一级大胆视频| 九九热精品视频国产| 欧美性xxxx极品hd满灌| 中文字幕日韩在线视频| 欧美精品在线免费观看| 欧美国产日本高清在线| 亚洲欧美日韩一区二区在线| 这里只有精品视频在线| 欧美成aaa人片在线观看蜜臀| 萌白酱国产一区二区| 日本精品一区二区三区在线| 欧美日本亚洲视频| 国产精品亚洲美女av网站| 久久久久久久久久久国产| 国内精品国产三级国产在线专| 日韩av高清不卡| 538国产精品一区二区免费视频| 欧美性xxxx极品hd欧美风情| 国产精品午夜国产小视频| 在线观看欧美视频| 伊人久久久久久久久久久久久| 欧美肥老妇视频| 亚洲欧美国内爽妇网| 伊人男人综合视频网| 隔壁老王国产在线精品| 国产精品福利在线观看网址| 亚洲人成77777在线观看网| 欧美丝袜美女中出在线| 91久久在线视频| 国产在线a不卡| 91国产视频在线播放| 久久中文字幕国产| 日韩欧美在线一区| 一区二区三区回区在观看免费视频| 亚洲午夜未满十八勿入免费观看全集| 国产精彩精品视频| 亚洲成年人在线播放| 视频一区视频二区国产精品| 91午夜理伦私人影院| 91精品久久久久久久久中文字幕| 亚洲成人三级在线| 亚洲香蕉伊综合在人在线视看| 国产精品视频久久久久| 97精品久久久中文字幕免费| 久久久久久成人精品| 亚洲免费av网址| 久久精品视频免费播放| 美女精品视频一区| 不卡毛片在线看| 久久久精品国产亚洲| 国产精品一区av| 国产精品欧美久久久| 另类少妇人与禽zozz0性伦| 亚洲国产成人久久综合一区| www.亚洲一区| 欧美性理论片在线观看片免费| 欧美激情视频免费观看| 欧美亚洲成人精品| 日韩精品欧美国产精品忘忧草| 成人免费网站在线| 日韩av有码在线| 欧美午夜www高清视频| 亚洲免费一在线| 日韩黄色高清视频| 91国自产精品中文字幕亚洲| 最近2019中文免费高清视频观看www99| 欧美精品激情视频| 国产精品中文字幕在线观看| 日韩欧美主播在线| 2019中文字幕在线| 成人有码视频在线播放| 欧美一区深夜视频| 中文字幕欧美专区| 色综合色综合网色综合| 日韩av片电影专区| 国产精品久久久久久久久久久久久| 91影视免费在线观看| 国产精品99久久久久久人| 国产在线视频欧美| 亚洲裸体xxxx| 日韩欧美主播在线| 亚洲第一视频在线观看| 国产精品电影观看| 国产激情综合五月久久| 亚洲最大在线视频| 91久久久国产精品| 日韩人体视频一二区| 国色天香2019中文字幕在线观看| 中文字幕亚洲国产| 91沈先生作品| 亚洲第一福利视频| 91精品久久久久久| 亚州欧美日韩中文视频| 国内精品400部情侣激情| 精品亚洲男同gayvideo网站| 久久99视频精品| 波霸ol色综合久久| 欧美裸体xxxx极品少妇软件| 欧美视频在线观看 亚洲欧| 欧美中文字幕精品| 国产精品第七影院| 最近2019年日本中文免费字幕| 91视频九色网站| 97人人做人人爱| 激情久久av一区av二区av三区| 黄色成人在线播放| 日韩中文字幕第一页| 97在线视频免费看| 国产精品一区二区在线| 欧美成人精品不卡视频在线观看| 欧美高清视频一区二区| 日韩久久精品电影|