Ios 主机支持TLS 1.2,网络握手失败

Ios 主机支持TLS 1.2,网络握手失败,ios,ssl,afnetworking,ios9,Ios,Ssl,Afnetworking,Ios9,我正在尝试发布到支持TLS 1.2的服务器——至少当我在浏览器中执行GET时,我可以验证通信是否使用TLS 1.2,以及证书是否由证书颁发机构验证。然而,当我尝试使用AFIOS 9.0(13A4305g)/Xcode 7-beta4将代码发布到该服务器时,我的握手失败了 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.requestSerializer = [AFH

我正在尝试发布到支持TLS 1.2的服务器——至少当我在浏览器中执行GET时,我可以验证通信是否使用TLS 1.2,以及证书是否由证书颁发机构验证。然而,当我尝试使用AFIOS 9.0(13A4305g)/Xcode 7-beta4将代码发布到该服务器时,我的握手失败了

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." ...

我错过什么了吗?我怎样才能挖得更深?假设这是服务器的问题,而不是代码的问题——我怎么能窥探到呢?

Steffen让我找到了答案,事实上我需要合适的密码。查看端口上支持的密码的简单方法是。应用程序传输安全支持的密码。一旦我能够在完全配置的网站上进行测试,我就不需要任何类型的白名单。对于没有密码的TLS站点,我可以将
nSthirdPartyExceptionRequiremesForwardSecretary
设置为false

更新

如果您使用OS X El Capitan的beta 3或更高版本,可以使用以下命令:

nscurl --verbose --ats-diagnostics <host>
nscurl——详细——ats诊断

这将告诉您需要向白名单中添加哪些条目才能成功连接。这对于解开类型为
CFNetwork SSLHandshake failed(-9801)

的SSL故障的神秘面纱有很大帮助,Steffen让我找到了答案,事实上我需要适当的密码。查看端口上支持的密码的简单方法是。应用程序传输安全支持的密码。一旦我能够在完全配置的网站上进行测试,我就不需要任何类型的白名单。对于没有密码的TLS站点,我可以将
nSthirdPartyExceptionRequiremesForwardSecretary
设置为false

更新

如果您使用OS X El Capitan的beta 3或更高版本,可以使用以下命令:

nscurl --verbose --ats-diagnostics <host>
nscurl——详细——ats诊断

这将告诉您需要向白名单中添加哪些条目才能成功连接。这对于揭开类型为
CFNetwork SSLHandshake failed(-9801)

的SSL故障的神秘面纱有很大帮助。这可能与问题所在有关,即iOS9不仅需要TLS1.2,而且还需要特定的密码(前向保密)。@SteffenUllrich看起来非常有希望。据我所知,我访问的网站没有所有必需的密码。一旦我把问题解决了,我会看看会发生什么。这可能与iOS9不仅需要TLS1.2,而且还需要特定密码(前向保密)的问题所在有关。@SteffenUllrich,这看起来很有希望。据我所知,我访问的网站没有所有必需的密码。我将在解决问题后看看会发生什么。还要注意:“证书必须至少使用一个SHA256指纹,该指纹具有2048位或更高的RSA密钥,或256位或更高的椭圆曲线(ECC)密钥。”iOS客户端是否可以关闭ATS并仍然能够连接到仅TLS 1.2的服务器?我的应用尚未准备好进行ATS,但后端服务器配置为TLS 1.2,当客户端连接到服务器进行授权处理时,web服务器生成一个票证并将其发送回iOS客户端,但是,当我使用同一票证进一步呼叫后端服务器时,服务器无法识别票证。当我将iOS客户端票证与Windows API测试仪票证进行比较时(这是有效的),iOS客户端票证要短得多。抱歉,我是个新手。还要注意:“证书必须至少使用一个SHA256指纹,该指纹必须具有2048位或更高的RSA密钥,或者256位或更高的椭圆曲线(ECC)密钥。”iOS客户端是否可以关闭ATS并仍然能够连接到仅TLS 1.2服务器?我的应用尚未准备好进行ATS,但后端服务器配置为TLS 1.2,当客户端连接到服务器进行授权处理时,web服务器生成一个票证并将其发送回iOS客户端,但是,当我使用同一票证进一步呼叫后端服务器时,服务器无法识别票证。当我将iOS客户端票证与Windows API测试仪票证进行比较时(这是有效的),iOS客户端票证要短得多。对不起,我是新手。