2016-06-11 107 views
0

服务器我有,我已成立了由使用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。

+0

也就是说它是很有可能的问题是在我的服务器端为使用'的https:// www.google.com'正常工作 –

回答

1
* TLS 1.2 connection using TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 

这是一个DHE密码套件卷曲使用此处。这可能意味着,因为通常这些是优选的相比DHE您的服务器不支持ECDHE密码套件。

iOS 9 Release Notes:现在

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 –

相关问题