ご存知の方も多いかと思いますがAppleのiOS端末は同社セキュリティポリシーによりアプリなどで識別情報などを利用することができません。
そのため「このクライアント証明書はこのiOS端末でダウンロードさせたい!」などのソリューションは厳密に実現させようとすると難しいです。
そこでOTA(Over the Air)です。
OTAを聞いたことがありますか?Apple社のiOS端末でネットワーク経由で証明書や設定などをセキュアにインストールする仕組みです。
この仕組みを使えばネットワーク経由で端末を厳密に制限して設定などをダウンロードさせることができてしまうのです。
弊社サービスSeciossLinkではOTA配布(オプション機能)を有効にすることで、OTAの仕組みを使ってIMEIまたはUDIDで端末を制限してクライアント証明書をダウンロードさせることができます。
今回はOTA配布の仕組みについてお話しようと思います。
まずiOS端末でクライアント証明書のダウンロードボタンを押すと端末情報要求リクエストを返します。
要求する端末情報属性(UDID、IMEIなど)と証明書IDなどを暗号化したトークン(以後のやり取りはこれを引き継ぐ)をパラメータにいれて端末情報要求リクエストをiOS端末に送ります。
iOS端末ではこの要求を受けて設定をインストールするかダイアログでユーザーに確認します、OKとなればOTAサーバーに要求された端末情報を送ります。
返ってきた端末情報と該当ユーザーに設定された端末情報値(UDID、IMEIなど)と照合します。OKであればSCEPサーバー(署名用のパスワードを発行するサーバー)から発行パスワードを受け取り、SCEPサーバーの情報と共に署名要求をiOSに送ります。
iOS端末はこれを受けて自動的にSCEPサーバーに署名用証明書の発行を要求します。発行を受けるとその証明書で署名されたクライアント証明書のダウンロードリクエストを返します。
返ってきた署名付きのレスポンスから署名した証明書を取り出しSCEPサーバーで発行されたものか検証します。OKであればやっとクライアント証明書のダウンロードです。長かった。