TL; DRバージョン:サーバーの秘密鍵を渡すことを伴わないサーバー証明書をiOSクライアントに渡す方法はありますか?iOS - サーバー証明書をiOSクライアントのキーチェーンに挿入する方法
私は、MacOSサーバーアプリケーションと通信するiOSクライアントアプリケーションを作成しました(私は両端を制御しています)。物事をより安全にするために、自己署名証明書を使用して証明書のピン割り当てを実装しました。開発中にこれを達成するために、私はServer証明書をiOSクライアントアプリケーションにハードコーディングし、TLSハンドシェイク中に正確な証明書を提供するサーバーにのみ接続するようクライアントに指示しました。すべてがうまくいっています。
現実世界では、このシステムを1セット(1つのサーバー、各顧客に複数のクライアント)として販売しています。したがって、サーバー証明書をiOSクライアントにハードコードすることはできません。私の計画は、ここに述べたように代わりのiOSクライアントに(電子メールを介して)帯域外のサーバ証明書を提供することです:Making Certificates and Keys Available To Your App:
アプリは、自分のキーチェーンアクセスグループにキーチェーン項目にアクセスすることができます。
自分のアプリでデジタルIDを使用するには、コードを入力してインポートする必要があります。これは、通常、PKCS#12形式のBLOBを読み込み、関数を使用してBLOBの内容をアプリケーションのキーチェーンにインポートすることを意味します。
SecPKCS12Import
IDをプロビジョニングする方法の1つは電子メールです。デバイスをプロビジョニングするときは、関連するユーザーに、PKCS#12ファイルとしてクライアントIDを添付した電子メールを送信します。
私の問題は、.P12ファイルは、証明書とサーバの秘密鍵が含まれていることである - これは同様に沿って、秘密鍵を渡すために非常に間違っているようです。
サーバ証明書をサーバの秘密鍵を渡すことを伴わないiOSクライアントに渡す方法はありますか?
ありがとうございます!