Я пытаюсь отправить сообщение на сервер, поддерживающий TLS 1.2 - по крайней мере, когда я выполняю GET в браузере, я могу проверить, что связь использует TLS 1.2 и что сертификат проверен уполномоченным органом. Однако, когда я пытаюсь выполнить POST в моем коде на этом сервере, используя AFNetworking iOS 9.0 (13A4305g)/Xcode 7-beta4, я получаю отказ от рукопожатия.Хост поддерживает TLS 1.2, сбой установления связи AFNetworking
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFHTTPRequestSerializer serializerWithContentType:@"application/x-www-form-urlencoded"];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
[manager POST:requestString parameters:@{ @"apiKey" : MY_API_KEY,
@"payload" : [MyParams paramsForPOSTAsJSON] }
success:^(AFHTTPRequestOperation *operation, NSDictionary *responseDict) {
...
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
myLog(@"Communication failed: %@", error);
}];
Неудача:
2015-08-06 15:01:08.398 MyApp[1795:394055] CFNetwork SSLHandshake failed (-9824)
2015-08-06 15:01:08.409 MyApp[1795:394055] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9824)
2015-08-06 15:01:08.412 MyApp[1795:393999] MyClass sendDataToServer Communication failed: Error Domain=NSURLErrorDomain Code=-1200 "An SSL error has occurred and a secure connection to the server cannot be made." ...
ли я что-то отсутствует? Как я могу копать глубже? Предположим, что это проблема с сервером, а не с кодом - как я могу его обмануть?
Это может быть связано с http://stackoverflow.com/questions/31820284/ssl-ios9-sslhandshake-failed-i-checked-with-openssl-my-server-works-with-tls, где проблема заключалась в том, что iOS9 необходимо не только TLS1.2, но и специальные шифры (прямая секретность). –
@SteffenUllrich Это выглядит очень многообещающим. Насколько я могу судить, на сайте, на котором я наносил удар, не хватает всех необходимых шифров. Я посмотрю, что произойдет, как только я это выясню. –