等待OS X El Capitan(以便我可以获得TSL 1.2)我启用了我的MAMP服务器以使用SSL / TSL。我的iOS应用程序使用如下所示的URL,如果在浏览器上输入,则可正常工作:
static var webServerLoginURL = "https://localhost:443/excogitoweb/mobile/loginM.php"
static var webServerGetUserTasks = "https://localhost:443/excogitoweb/mobile/handleTasks.php"
static var webServerGetUsers = "https://localhost:443/excogitoweb/mobile/handleUsers.php"
static var webServerGetProjects = "https://localhost:443/excogitoweb/mobile/handleProjects.php"
执行如下步骤:
openssl version
在终端上,我得到:
OpenSSL 1.0.2d 9 Jul 2015
所以我编辑了我的plist文件,添加了以下内容:
<key>NSAppTransportSecurity</key>
<dict> <key>NSExceptionDomains</key>
<dict> <key>localhost</key> <dict> <!--Include to allow subdomains--> <key>NSIncludesSubdomains</key>
<true/> <!--Include to allow insecure HTTP requests--> <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/> <!--Include to specify minimum TLS version--> <key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.0</string> </dict> </dict> </dict>
但是,在运行应用程序时,我仍然得到:
2015-09-21 17:54:17.491 ExcogitoWeb[83336:525096] CFNetwork SSLHandshake failed (-9824)
2015-09-21 17:54:17.497 ExcogitoWeb[83336:525096] CFNetwork SSLHandshake failed (-9824)
2015-09-21 17:54:17.500 ExcogitoWeb[83336:525096] CFNetwork SSLHandshake failed (-9824)
2015-09-21 17:54:17.500 ExcogitoWeb[83336:525096] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9824)
结果是来自数据库的数据为零并且应用程序崩溃。我想知道为什么它仍然拒绝工作,即使SSL / TSL版本较低......你能帮忙吗?
答案 0 :(得分:1)
据我所知,当您使用NSURLSession
建立网络时,您只能设置协议协商后将使用的最小/最大协议版本,您可以在NSURLSessionConfiguration
对象中设置它属性TLSMinimumSupportedProtocol
,可以使用属性TLSMaximumSupportedProtocol
设置最大版本。
修改强>
看来,有一种方法可以在较低级别的API中限制接受的TLS协议版本: iOS 5 and TLS 1.2 Interoperability Issues (虽然它有点老了)