AFNetworking 3.0 https 报错问题 CFNetwork SSLHandshake failed (-9801)
2016-06-21 15:49
776 查看
AFNetworking 3.0在使用https请求时候报错 NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9801)
但是在AFNetworking 2.0版本没有这个问题,可能是在3.0版本中对证书的TLS版本有要求。貌似是TLSv1.2之上
需要在NSAppTransportSecurity中添加对域名版本号的支持
<key>NSExceptionDomains</key>
<dict>
<key>your_domain.cn</key>
<dict>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.0</string>
</dict>
</dict>
</dict>
http://www.360doc.com/content/15/0918/15/20919452_499915817.shtml
例4 低级的ATS
在某些情况下,可能ATS用于所有情况,或者一些,或者是自有的URL,但是并未针对所有的ATS最佳实践全部支持。也许你的应用服务器仅支持TLS1.2,但是不支持之后的版本,与其把涉及到的所有域都设置为不用ATS,不如设置为支持版本较低的ATS。这种场景下,需要创建一个*NSExceptionDomains*字典,这是一个对于每个域都要重用的字典选项,然后设置*NSExceptionRequiresForwardSecrecy*值为false。类似的,如果你希望向前支持,但是需要最低版本的TLS,你可以通过*NSExceptionMinimumTLSVersion*关键字定义你的应用服务器所支持的TLS版本。
但是在AFNetworking 2.0版本没有这个问题,可能是在3.0版本中对证书的TLS版本有要求。貌似是TLSv1.2之上
需要在NSAppTransportSecurity中添加对域名版本号的支持
<key>NSExceptionDomains</key>
<dict>
<key>your_domain.cn</key>
<dict>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.0</string>
</dict>
</dict>
</dict>
http://www.360doc.com/content/15/0918/15/20919452_499915817.shtml
例4 低级的ATS
在某些情况下,可能ATS用于所有情况,或者一些,或者是自有的URL,但是并未针对所有的ATS最佳实践全部支持。也许你的应用服务器仅支持TLS1.2,但是不支持之后的版本,与其把涉及到的所有域都设置为不用ATS,不如设置为支持版本较低的ATS。这种场景下,需要创建一个*NSExceptionDomains*字典,这是一个对于每个域都要重用的字典选项,然后设置*NSExceptionRequiresForwardSecrecy*值为false。类似的,如果你希望向前支持,但是需要最低版本的TLS,你可以通过*NSExceptionMinimumTLSVersion*关键字定义你的应用服务器所支持的TLS版本。
相关文章推荐
- Linux实现https方式访问站点
- HTTPS科普扫盲帖
- HTTPS的七个误解
- Centos 5下配置https服务器的方法
- apache https配置详细步骤讲解
- php使用curl打开https网站的方法
- win2003 https 网站的图文配置教程
- IIS7/IIS7.5 URL 重写 HTTP 重定向到 HTTPS的方法
- 安卓APP测试之使用Burp Suite实现HTTPS抓包方法
- android教程使用webview访问https的url处理sslerror示例
- PHP简单实现HTTP和HTTPS跨域共享session解决办法
- php之curl实现http与https请求的方法
- apache中使用mod_gnutls模块实现多个SSL站点配置(多个HTTPS协议的虚拟主机)
- Apache mod_rewrite实现HTTP和HTTPS重定向跳转
- 浅析Android系统中HTTPS通信的实现
- 在服务器上配置仅使用HTTPS通信的教程
- php curl 获取https请求的2种方法
- php使用curl获取https请求的方法
- 在 Django/Flask 开发服务器上使用 HTTPS