间歇性SSL失败使用ASIHTTPRequest和MKNetworkKit通过服务器进行身份验证

时间:2012-07-20 23:02:31

标签: ios ssl asihttprequest mknetworkkit

我正在研究iOS应用程序,当我尝试访问API服务器上的某些API时,我遇到了间歇性的SSL故障。失败不会一直发生,但它们的发生足以成为一个重大问题。发生SSL故障时,报告的错误代码为errSSLCrypto或“基础加密错误”(-9809)。当应用程序尝试登录时,我主要看到这些问题,但有时在访问其他API时会看到它。

该应用程序是使用ASIHTTPRequest编写的,这是构建登录请求的代码:

ASIFormDataRequest *loginFormDataRequest = [[ASIFormDataRequest alloc] initWithURL:...];
loginFormDataRequest.timeOutSeconds = 30.0f; // Included in an attempt to fix timeout problems
loginFormDataRequest.shouldAttemptPersistentConnection = NO; // Included in an attempt to fix timeout problems
[loginFormDataRequest addPostValue:self.username forKey:@"username"];
[loginFormDataRequest addPostValue:self.password forKey:@"password"];
[loginFormDataRequest addPostValue:@"1" forKey:@"applogin"];
loginFormDataRequest.delegate = self;
[loginFormDataRequest setDidFinishSelector:@selector(didFinishLoginFormDataRequest:)];
[loginFormDataRequest setDidFailSelector:@selector(didFailLoginFormDataRequest:)];
[loginFormDataRequest startAsynchronous];

非常简单。

我已经更新了ASIHTTPRequest以响应Apple的Technical Note TN2287,但这没有帮助。也没有将validatesSecureCertificate属性设置为NO

与服务器的加密连接似乎可以检查出来。 Chrome说:

  • 您与[服务器]的连接使用256位加密进行加密。
  • 连接使用TLS 1.0。
  • 使用CAMELLIA_256_CBC加密连接,使用SHA1进行消息验证,使用DHE_RSA作为密钥交换机制。
  • 使用DEFLATE压缩连接。

正在使用https在端口442上联系服务器。我还尝试使用MKNetworkKit实现此登录代码,但我仍然间歇性地看到了SSL错误,因此我认为问题不在于ASIHTTPRequest。

我没有想法,所以我会感激任何人可能有的洞察力。在此先感谢您的帮助!

0 个答案:

没有答案