はじめに
iOSアプリの配布用証明書(Distribution Certificate)の作り方はいつも忘れてググってしまうのですが、最近ググると古いやり方が大量にヒットするうえ、さらに自分の記憶も2016年頃で止まってたため、大混乱しました。
最近iOS開発を始めた人は何も混乱しないような気がしますが、新しいやり方を備忘録として書き残します。
昔は証明書署名要求(CSR)ファイルをローカルで生成し、Apple Developer へアップロードして iOS Distribution Certificatie を生成してました。検索するとたくさんヒットするのはこちらのやり方です。
Xcode 8以降では証明書の自動管理機能が導入され簡単になっています。現在は、Xcode の Manage Certificates 機能で「Apple Distribution Certificate」を作成するのがシンプルな手順と思われます。
Xcode からの Apple Distribution Certificate の作り方
手順は Xcode 12.5 のものです。
- Xcodeを起動し、メニューの[Xcode]- [Preferences...]-[Accounts]でアカウント画面を開く
- Apple ID とチームを選択し、右下の[Manage Certificates...]を選択
- Singning certificates for "Team Name": ダイアログが表示されたら、左下の + ボタンをクリック。
- [Apple Distribution...] を選択
以上のステップだけで、Apple Distribution Certificate が生成されます。
※この画面では日付しか項目を区別する方法がないため、面白がって何個もCertificateを作ると区別がつかなくなるので注意しましょう(やっちゃいました...)。
CERファイルのダウンロードは不要
前記の方法に従って、Xcode で Apple Distribution Certificate を生成すると、Apple Developer アカウントに登録されるのと同時に、Mac の KeyChain にも自動で登録されます。このため、昔は必要だった Apple Developer アカウントから .CER ファイルをダウンロードして登録するステップは必要ありません。また、他のマシンでビルドする際も Xcode に Apple ID でログインすれば、Apple Distribution Certificate は自動でダウンロードしてくれます。
秘密鍵のバックアップは必要
秘密鍵のバックアップは以前と同様に、自前で行う必要があります。KeyChain に登録された Apple Distribution Certificate にぶら下がる形で、秘密鍵が登録されてます。
以前と同様に、現在でも、この秘密鍵をなくしてしまうとビルドはできません。また、他のマシンでビルドする場合にも秘密鍵が必要になります。秘密鍵は .p12 形式でエクスポートし、自前でバックアップしておく必要があります。
よもやま
証明書署名要求(CSR)ファイルを Xcode の Certificate Assistant で作る昔ながらの方法では、生成時に「CommonName」欄に入力した名称で、KeyChain の Keys カテゴリに秘密鍵と公開鍵の両方が追加されます。これをよく知らずにCSRを作ると、後で一体何のために KeyChain に登録されたものなのか非常に分かりにくいエントリが KeyChain に溜まることになります。
Xcode の Manage Certificates 機能で作成すると、先のスクショのようにApple Distribution: Team Name (TEAM ID)
のような形式の分かりやすい名前で秘密鍵のエントリが KeyChain に登録されます。したがって、後から KeyChain を見ても分かりやすく、やはりこちらの Xcode から直接 Distribution Certificate を作るほうが堅実かなと思います。