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];
かなり簡単です。
Apple のテクニカル ノート TN2287に応じて ASIHTTPRequest を既に更新しましたが、役に立ちませんでした。validatesSecureCertificate
プロパティを に設定しませんでしたNO
。
サーバーへの暗号化された接続は正常にチェックアウトされているようです。クロム 言います:
- [サーバー] への接続は 256 ビット暗号化で暗号化されています。
- 接続には TLS 1.0 が使用されます。
- 接続は CAMELLIA_256_CBC を使用して暗号化され、メッセージ認証には SHA1、キー交換メカニズムとして DHE_RSA が使用されます。
- 接続はDEFLATEで圧縮されます。
サーバーは、https を使用してポート 442 で接続されています。また、MKNetworkKit を使用してこのログイン コードの実装を試みましたが、それでも断続的に SSL エラーが発生したため、問題は ASIHTTPRequest にあるとは思いません。
私はアイデアが不足しているので、誰かが持っている洞察に感謝します。よろしくお願いします。