839の日記

業務とは関係ない趣味の話を書くブログです。

クライアント証明書をiPhoneに入れる

背景

自分しか使わないけどhttp経由で家以外でも見たい、というケースがたまにありクライアント認証を挟むようにしています。
そしてiPhoneにクライアント証明書を入れたくなり、毎回忘れて調べているので記事としてまとめます。
作業はmacOS前提です。

方法

まず以下の手順でkeyとcertを用意し、p12ファイルを作成します。

openssl genrsa -out client.key 2048
openssl req -new -key client.key -out client.csr -subj '/CN=example.app'
openssl x509 -in client.csr -out client-ca.crt -req -signkey client.key -days 3650
# パスワードを要求されますが、後の手順で使うので覚えておいてください
openssl pkcs12 -export -inkey client.key -in client-ca.crt -out mobile-client.p12 -name "Example Client Certificate"

次に以下のアプリを入れます。

Apple Configurator 2

Apple Configurator 2

  • Apple
  • ユーティリティ
  • 無料
apps.apple.com

アプリを開いたらCmd+Nで新規プロファイルを作成し、証明書を選択し先程作成したp12ファイルを選択します。
パスワードはp12ファイルを生成するときに指定したものを入力してください。
Cmd+Sで名前を付けて保存してください(e.g. client-cert.mobileconfig)。

作成されたmobileconfigを渡す方法は一旦Apple Configurator2を閉じ、デバイスmacに繋ぎます。
PCを信頼するか聞いてくるので信頼しておいてください。

その後、Apple Configurator2を開くと自分のデバイスが出ていると思うので選択し、画像左上の方にある追加でプロファイルを選びます。

f:id:husq:20191204233053p:plain

finderが開くので先程生成したmobileconfigファイルを選択するとiPhoneにプロファイルが転送されます。
iPhone側では一般->プロファイルの欄でダウンロード済みプロファイルの欄にプロファイル情報が表示されています。
そのプロファイルをタップしてインストールをするとクライアント証明書として利用可能になります。

クライアント証明書が必要なサイトをPCからChromeで閲覧しようとすると証明書の選択というのが出ますが、iPhoneSafariはそういう表示は出ません。
証明書が適切に選択されていればそのままWebサイトを開くことができます。