SSLでREST Webサービスを使用するアプリケーションに取り組んでいます。Web サービスは既に配置されており、SSL 証明書で自身を識別しています。証明書は有効に見えますが、iOS によってまだ拒否されています。詳細は次のとおりです。
- Web サービスは、このリストにあるルート証明書、中間証明書、および最後に Web サービス証明書の 3 つの証明書で構成される証明書チェーンを提示します。
- このメソッド
- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)space
は、Web サービスにリクエストを送信するたびに呼び出されます。RestKitコードのコメントには、「サーバーはOSが検証できないSSL証明書を使用しています」と書かれているので、その方法に到達することは決してないはずですよね? - テスト デバイスで Safari から Web サービスにアクセスしようとしましたが、証明書は自動的に受け入れられます。同じことがデスクトップ ブラウザにも当てはまります。
- Sslshopperは、証明書は問題ないと言っています。
証明書をアプリケーション バンドルに追加し、自己署名証明書と同じように処理することで Web サービスに接続できますが、これを適切な方法で解決したいと考えています。特にiOSのSafariが証明書を受け入れ、私のアプリケーションが受け入れない理由を誰かが指摘できれば、どんな助けも大歓迎です。
編集: 古いRestKitバージョンを使用していることがわかりました。サーバーにいくつかのリクエストをディスパッチできる概念実証を作成し、今日 (2012 年 5 月 3 日) の RestKit マスターで証明書が受け入れられました。ただし、 への 2 つの呼び出しがconnection:canAuthenticateAgainstProtectionSpace:
あり、どちらも NO を返しますが、とにかく適切に接続できます。したがって、新しい質問は、RestKit で正確に何が変更され、現在適切に接続できるかということです。リリースに使用する古いバージョンにパッチを適用する必要があるため、これを知る必要があります。その後、RestKitを更新します。
編集:それをRestKitの人たちに返す必要がありますが、それは彼らのせいではありません. 接続しようとしている Web サービスは、問題の原因であるある種のゲートウェイを使用しています。その日の早い段階でゲートウェイの乗組員からいくつかの修正があったため、最新のRestKitバージョンでテストを実行することができたときには正しく機能していました.