一、TLS的历史
1994年,NetScape公司设计了SSL协议(Secure Sockets Layer)的1.0版,但是未发布。
1995年,NetScape公司发布SSL 2.0版,很快发现有严重漏洞。
1996年,SSL 3.0版问世,得到大规模应用。
1999年,互联网标准化组织ISOC接替NetScape公司,发布了SSL的升级版TLS(Transport Layer Security) 1.0版。
2006年和2008年,TLS进行了两次升级,分别为TLS 1.1版和TLS 1.2版。最新的变动是2011年TLS 1.2的修订版。
二、Xcode中info.plist相关字段含义
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoadsInMedia</key>
<false/>
<key>NSAllowsLocalNetworking</key>
<false/>
<key>NSAllowsArbitraryLoads</key>
<false/>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<false/>
<key>NSExceptionDomains</key>
<dict>
<key>www.app.youCompany.cn</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionMinimumTLSVersion</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<true/>
<key>NSRequiresCertificateTransparency</key>
<true/>
</dict>
</dict>
</dict>
NSAllowsArbitraryLoads : 默认为NO。如果设置为YES,将解除ATS限制,将会引发苹果的审查。一般设置为NO,然后通过下面的NSExceptionDomains去添加白名单(或者叫例外)。
NSAllowsArbitraryLoadsInMedia : 默认为NO。如果设置为YES,将解除AVFoundation访问媒体内容时的ATS限制。
NSAllowsArbitraryLoadsInWebContent : 默认为NO。如果设置为YES,将解除网页访问时的ATS限制。
NSAllowsLocalNetworking: 默认为NO。如果设置为YES,将解除访问本地资源时的ATS限制。
NSExceptionDomains : 添加例外
NSIncludesSubdomains : 默认为NO。如果设置为YES,当前域名的 ATS 策略适用于其所有子域名。
NSExceptionAllowsInsecureHTTPLoads: 默认为NO。如果设置为YES,可以同时通过 HTTP 和 HTTPS 访问当前域名。(将会引发苹果的审查,上线时需要说明原因)
NSExceptionMinimumTLSVersion: string类型,可以设置 TLS 最低版本。(因为低版本有安全漏洞,将会引发苹果的审查,上线时需要说明原因)
NSExceptionRequiresForwardSecrecy: 默认为YES。如果设置为NO,允许针对当前域名使用不支持正向保密的 TLS 加密算法。
NSRequiresCertificateTransparency: 默认为NO。如果设置为YES,将验证域名服务器证书的Certificate Transparency时间戳 。
提交审核说明(举例):
- 必须连接由其他机构控制的服务器,其还不支持安全连接。
- 必须通过 web 展示来源不一的各种网络内容,但又不能完全使用NSAllowsArbitraryLoadsInWebContent所管理的类。
- 必须支持那些还未升级至可使用安全连接,不得不通过公共域名访问网络的设备。
后记:因最近公司需要我们整理一些自己在工作中用到的基础知识,特此整理搜集了一些笔记,放入简书供大家学习探讨。
相关文章:
APP基础功能的配置管理之URL Scheme和白名单
APP基础功能的配置管理之屏幕旋转控制
APP基础功能的配置管理之系统权限控制