CFNetwork的SSLHandshake失败(-9824)对支持TLSv1.2工作
问题描述:
服务器我有,我已成立了由使用curlCFNetwork的SSLHandshake失败(-9824)对支持TLSv1.2工作
$ curl --verbose https://{my-servers-dns}:8443/
* Trying {my-servers-ip-address} ...
* Connected to dev.a-b.fit ({my-servers-ip-address}) port 8443 (#0)
* TLS 1.2 connection using TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
* Server certificate: {my-servers-dns}
* Server certificate: Go Daddy Secure Certificate Authority - G2
* Server certificate: Go Daddy Root Certificate Authority - G2
> GET/HTTP/1.1
...
然而,随着TLSv1.2工作的工作将确认一个非常简单的Tomcat Web服务器,如果我跑这个非常简单的SWIFT代码做出同样的GET请求
let url = NSURL(string: "https://{my-servers-dns}:8443/")!
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithURL(url, completionHandler: {(data, response, error) -> Void in
if let response = response {
print("Response: \(response)")
}
else {
print("Response: nil")
}
})
当我这样做,我得到以下2个错误
CFNetwork SSLHandshake failed (-9824)
NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9824)
谷歌搜索这些错误提示,问题是,我的应用程序不能与TLSv1.2工作连接。但是,我会认为curl请求表明支持TLS 1.2。
答
* TLS 1.2 connection using TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
这是一个DHE密码套件卷曲使用此处。这可能意味着,因为通常这些是优选的相比DHE您的服务器不支持ECDHE密码套件。
DHE_RSA密码套件是由在TLS客户安全传输默认禁用。这可能会导致无法连接到仅支持DHE_RSA加密套件TLS服务器。 ...
这意味着如果您的服务器只支持DHE密码,那么在iOS 9客户端的默认设置中连接将失败。这可能就是这种情况。
+0
添加所需的ECDHE到tomcat这里有一些非常简单的指令的http:// stackoverflow.com/questions/31971499/ecdhe-cipher-suites-not-supported-on-openjdk-8-installed-on-ec2-linux-machine –
也就是说它是很有可能的问题是在我的服务器端为使用'的https:// www.google.com'正常工作 –