關於iOS SDK中HTTPS強制握手的經驗分享

因項目須要,對HTTPS強制握手做了研究,分享處理方法以下(NSURLConnection):緩存

1、 問題與需求服務器

  問題:接入方可能對同個域名作了HTTPS證書驗證,在緩存機制下,進入SDK中默認複用HTTPS握手;或者NSURLProtocol對驗證做了攔截。網絡

  需求: 基於SDK方不信任接入方驗證,需強制從新握手。dom

 

2、理論前提spa

  1. 握手緩存以IP地址,DNS域名,端口爲KEY對握手做緩存get

  2. 「www.xxx.com」, 「www.xxx.com.」會有相同的DNS解析結果。關於加.的解析,搜索下 fully qualified domain name域名

 

3、解決方案io

  1. 服務器方給出專用IP,域名或端口class

  2. 客戶端:搜索

    a. 在統一入口的API訪問時,將域名後加「.」做爲僞造URL

    b. 僞造URL觸發握手後,請求返回didLoad或失敗did fail均不做處理,將僞造API去除「.」,

        變回標準API,繼續正常通信

    c. SDK握手添加標識,因URLProtocol或證書緩存致使的 「跳過驗證「 都可被防護

 

4、負做用

  1.不復用接入方的握手,增長了網絡訪問時間

      2.增長了一次僞造URL訪問的通信時間

相關文章
相關標籤/搜索