2016-06-11 102 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 –

相關問題