关于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访问的通信时间

相关文章
相关标签/搜索