5

iOS アプリに SSL 相互認証を実装しようとしています。私が見たほとんどの例では、クライアント証明書はアプリケーション パッケージにバンドルされています。しかし、私の場合は、クライアント証明書をリモートで (つまり、リンクから、または電子メール経由で) ロードする必要があります。

外部ソース (メール アプリなど) から証明書を読み込もうとすると、設定アプリに移動し、Apple のキーチェーンにインストールされます。したがって、この証明書は私のアプリではアクセスできません。

誰かがこれについてのアイデアを提案してください。

4

1 に答える 1

8

社内の iPad アプリでこのようなシステムを構築しました。

システム設定、プロファイルなどを忘れてください。この方法でインストールされたすべての証明書は、サードパーティのアプリからはアクセスできず、システム アプリからのみアクセスできます。おそらく、Apple キーチェーンにインストールされているためです。

これらの 3 つの方法を調べて証明書をロードし、最後の方法を使用しました。

  1. あなたがすでに見たように、アプリにバンドルすることは実用的ではありません
  2. 別のアプリ (メールなど) からファイルを送信する
  3. リンクを使用してダウンロードします(私がしたこと)

序文

  • CA、自動/手動による証明書の発行/取り消し方法などを使用して、simil-PKI を構築したと思います。 したがって、問題はデバイスへの配信です。
  • すべてのソリューションについて、秘密鍵と証明書を PKCS #12 形式で強力なパスワードとともに保存することをお勧めします。
  • MDM を使用してデバイスを管理します。アプリが内部用で、会社のデバイスで使用される場合は、追加オプションを監視します (たとえば、Meraki は無料ですが、ManagedAppConfiguration を処理しません)。

ソリューション

解決策 1)

特定の証明書を使用して異なるバージョンのアプリを生成するのは非常に困難 (または不可能) であるため、実用的ではありません。言うまでもなく、ユーザーのすべてのデバイスで特定のバージョンの配布を処理することはほぼ不可能です。

解決策 2)

最も安全な方法は、ユーザーがパスワードを選択して .p12 ファイルを暗号化できるようにすることです。そのため、p12 を開くときにユーザーは自分のパスワードを入力する必要がありますが、これはそれを機能させるための他の作業につながります。安全性は劣りますが有効な方法は、アプリに埋め込まれた強力なパスワードを 1 つ使用し、それをすべての .p12 ファイルに使用することです。

解決策 3)

2) と同様ですが、Web アプリケーションの特定の URI からファイルを直接ダウンロードします。これにより、アプリが自分自身を識別できるため、自動構成が可能になります。

基本的にこれらの手順は次のとおりです。

  • アプリは、HTTPS 経由でアプリケーションの特定の URL に接続します。
  • サーバー証明書が正しいことを確認します (信頼されたオリジン)。
  • 認証するために何かを送信します。
    私たちの場合、デバイスの準備中に設定したデバイス名を使用し、MDM を使用してリモートで変更できます。
  • 証明書を含む構成バンドルをダウンロードします
    JSON ペイロードを使用して、base64 でエンコードされた PKCS #12 ファイルとその他のデータを送信し、アプリを構成します。

MDM が ManagedAppConfiguration をサポートしている場合、これらの操作を少し変更して、より柔軟な動作を構築できます。認証のためのデバイス名の使用を完全に廃止します。

WWDC 2014 #704 - エンタープライズおよび教育向けアプリの構築 ~13:00
Apple Developer - ManagedConfig サンプル アプリ

追加されたパラノイア

  • すべてを記録してください!アプリのこの部分が行うすべて (失敗した/間違った要求、存在しないデバイス名の要求など)

  • 新しいデバイスを構成する必要がある場合にのみ、構成 URL がアクティブ化/非アクティブ化されます。
    これはさまざまな方法で実行できます。私の webapp は特定のファイルの存在をチェックするのでtouch APP_CERTIFICATES_CONFIG_ENABLED、自動構成サービスを有効にして、ファイルを削除するすべてを無効にするなどのことができます。
    私の監督なしに証明書が回らないようにするためです。

于 2015-03-10T20:41:17.587 に答える