iOS9 ATS特性以及在Xcode7中针对iOS9开启不安全的http连接

来源:互联网 发布:美工钢笔用法 编辑:程序博客网 时间:2024/06/03 21:31

在iOS9中Apple新增了App Transport Security(ATS)特性,其主要目的就是规定了App与服务器通信时将默认要求使用安全的连接,旨在提高App的安全性,APP在使用higher-level API(如NSURLConnection, NSURLSession等)进行通信时如果不采用TLS 1.2协议进行传输,iOS将会报错。Apple推荐创建新的App和在更新已有的App时都应尽快对ATS进行适配。本文将介绍在Xcode7中对ATS进行配置。

当我们在iOS9下直接使用HTTP连接时,会出现如下错误:

App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure.  Temporary exceptions can be configured via your app's Info.plist file.

如果你希望暂时不适配ATS,则可以在项目的info.plist中添加如下配置,使所有未特殊指定的连接都不开启ATS特性,即允许明文传输的Http连接。其中<key>NSAppTansportSecurtiy</key>是ATS配置的根节点

<key>NSAppTransportSecurity</key>     <dict>        <key>NSAllowsArbitraryLoads</key>        <true/>    </dict>

NSAllowsArbitraryLoads

如果你希望适配ATS,则需注意ATS特性有如下三个需求

  • 必须要基于TLS 1.2版本进行安全传输
  • 加密方式必须只能是支持前向加密的方法
  • 证书必须至少使用SHA256的Fingerprint和至少2048bit的RSA Key或者至少256bit的Elliptic-Curve(ECC)Key

ATS接受如下加密方法:

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

如果开启了ATS但是访问的安全连接不符合上述三个条件的任意一个,就会报错。可以通过在info.plist中对个别域名配置例外情况来允许非安全连接或者不完全支持ATS的安全连接。可以参考如下的例子

<key>NSAppTransportSecurity</key><dict>   <key>NSExceptionDomains</key>   <dict>      <key>wty.im</key>      <dict>         <key>NSIncludesSubdomains</key>         <true/>         <key>NSExceptionRequiresForwardSecrecy</key>         <false/>         <key>NSExceptionAllowsInsecureHTTPLoads</key>         <true/>         <key>NSExceptionMinimumTLSVersion</key>         <string>1.1</string>      </dict>   </dict></dict>

所有可以设置的参数如下:
ATSSetting.jpg

当NSExceptionRequiresForwardSecrecy设置为NO时,ATS将额外支持以下加密方法:
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA

更多ATS的信息可以参考iOS Developer Library的App Transport Security Technote


本文个人博客地址: http://wty.im/2015/09/22/iOS9-ATS-Feature-and-enable-insecure-http-connection-in-xcode7/
Github: https://github.com/wty21cn/

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 国外打印很贵怎么办 店铺访客被拒怎么办 steam锁支付后怎么办 芦荟茎太长了怎么办 网店加盟被骗怎么办 分期乐忘记账号怎么办 贴墙纸遇到插头怎么办 用了屈臣氏过敏怎么办 商品房内电箱不符合标准怎么办 淘宝上恶意退货怎么办 退货率高了怎么办 淘宝店被关了钱怎么办 买家不申请退款怎么办 被买家恶意投诉怎么办 淘宝投诉后退款怎么办 天猫投诉不成功怎么办 苹果手机打不开流量怎么办 苹果6流量打不开怎么办 苹果笔记本电脑打不开软件怎么办 苹果软件蜂窝打不开怎么办 苹果手机wifi打不开怎么办 苹果app变成韩语怎么办 ipad键盘变成英文怎么办 苹果8商店打不开怎么办 苹果手机不能下载怎么办 天猫魔盒遥控器丢了怎么办 电视盒子声音小怎么办 宽带los亮红灯怎么办 猫的lan灯不亮怎么办 光猫los灯不亮怎么办 移动宽带红灯亮怎么办 ie打不开网页怎么办win10 win10系统ie打不开怎么办 笔记本电脑玩lol卡怎么办 火狐浏览器电脑版打不开怎么办 手机淘宝没密码怎么办 实体店不让退货怎么办 出生公证双认证怎么办 手机淘宝网速慢怎么办 淘宝开店认证不通过怎么办 开网店不会做图怎么办