10

基本的に、iOS アプリは自己署名証明書を持つサーバーと通信する必要があります。私のアプリでは、理解できる信頼できないサーバー証明書で https が失敗しています。エラーは次のようになります。

エラー Domain=NSURLErrorDomain Code=-1202 「このサーバーの証明書が無効です。「私のホスト名」になりすましたサーバーに接続している可能性があり、機密情報が危険にさらされる可能性があります。

そのため、自己署名証明書を電子メールで iOS デバイスに送信し、プロファイルにインポートして、https 認証のルート CA の一部として使用されることを期待しました。驚いたことに、そうではなく、まだ同じエラーが発生しています。iOSはデフォルトでキーチェーンでルートCAを使用してサーバー証明書を検証すると思います。私が読んだことから、プロファイルでインポートされた証明書もキーチェーンにあります。そのため、インポートした自己署名証明書がルート CA として使用されない理由がわかりませんでした。

この時点で、私は本当にこのiOSのようなコーディングを介してこの自己署名証明書を信頼したくありませんこれは、お客様が当社のサーバーをネットワークにインストールし、独自の自己署名証明書を作成できる場合には機能しないためです。

どういうわけか、検索してもこれに関する情報はあまり得られませんでした。誰かがここでいくつかの光を当てることができますか?これをデバッグするために何をする必要がありますか? どうもありがとう。

7 月 15 日の更新:

この辺りのアップデート。また、構成プロファイルを使用して、自己署名 CA を iOS デバイスのルート CA に追加しようとしました。6.0 iPad および iPhone でのテストから、 iOS への信頼されたルート証明機関の追加に従って、同様に機能しません。そのため、刑務所で壊れたデバイスでのみ機能するかどうかはわかりません. 最後に、ユーザーが自己署名証明書をアプリにインポートできるようにすることになります。アプリは、これと同様の証明書検証のためにインポートされた証明書をロードします。iOS では、サーバー上の自己署名証明書を使用して https を使用してサーバーに接続する方法は? . この場合、他の人に役立つことを願っています。

4

1 に答える 1

2

リンクした最初のチュートリアルを見ると、それまたはそれのより高度な形式を使用できるはずです。テストして機能させたら、クライアントが独自の証明書を作成して追加するために必要なことは、 localhost.cerファイル「または使用する名前スキーム」が配置されているappsフォルダー内のlocalhost.cerファイルをオーバーライド/置き換えます。これを行うには多くの方法がありますが、証明書がオンラインでダウンロードできるリンクをアプリに伝え、ダウンロードしたら置き換えることができます。

ご不明な点がございましたら、さらにお手伝いさせていただきますが、これが正しい方向に役立つことを願っています。

于 2013-07-15T19:39:10.080 に答える