はつねの日記

Kinect, Windows 10 UWP, Windows Azure, IoT, 電子工作

iOSアプリ作成に必要な証明書についてまとめてみた

.NET 6やMAUIなど、今年、MicrosoftがGA(一般公開)する技術では、マルチプラットフォームのXamarin.Formsよりも更に促進されることが期待されるものが多いと感じています。

そこで、じゃあC#を使ってAndroidiOSのアプリを作成しようと思ったときに、意外にネックになるのが、iOSアプリを作成するときに必要な証明書の作成です。
しかも本番用証明書の期限は1年なので、私だけなのかもしれませんが、毎年どうやったのか思い出しながら不安になりつつ作業しています。
そこで、心理的安全が欲しいということもあり、ちょっとこの辺りを自分の言葉でまとめておきたいと思います。
この分野は専門外なので、何かおかしな記述があればご指摘いただき、随時、本文に反映させていくという若干他力本願な内容となりますが、最後までお付き合いいただければ幸いです。

登場人物

  • Apple Developer Program
  • MacOS上で作成する証明書(便宜上、アカウント証明書とします)
  • Apple Development 証明書(または、iOS App Development証明書)
  • Apple Distribution 証明書(または、iOS Distribution証明書)

証明書を発行しよう

Apple Developer Programの登録/更新

iOSアプリを開発してストアで公開してとなると、Apple Developer Programに加入する必要があります。
アプリ作成するだけなら加入必須ではないという話もあるようですが、そこについては今回は触れません。
developer.apple.com
Apple Developer Programの年間メンバーシップの料金は11,800円です。iOSなどのベータ版も入手できたり、様々な情報も得られますから、実際にストアに登録する作業を別部署でやり開発する人が直接できないようなジャパニーズトラディショナルカンパニーさんだったとしても、開発している部署でも(会社のお金で)登録しておくとよいと思います。

アカウントについて

ここで重要なのは、登録するときに記入するメールアドレスです。これが、今後の様々なところで「アカウント」として一意に識別されるための情報となります。

Team IDについて

メンバーシップに登録されるとTeam IDというものが払い出されます。このIDも重要で、要はアプリの発行元IDのようなものになります。
後々作成する証明書について、どの証明書かわからなくなったらこのTeam IDを他よりに判断することになります。

年間メンバーシップの更新について

なお、年間なので1年後にはメンバーシップの更新が必要になります。近づいてくるとメールで「そろそろ期限がきれますよ」とお知らせが飛んでくる新設設計なので、メール無視せずに期限切れになるまえにちゃんと更新しておくようにしましょう。
忘れない!絶対!

アカウント証明書の作成

Apple Developer Programの登録がおわったら、Macでの作業となります。

認証局に証明書を要求

f:id:hatsune_a:20210616190711p:plain
[キーチェーンアクセス]-[証明書アシスタント]-[認証局に証明書を要求]メニューをクリックします。

f:id:hatsune_a:20210616191257p:plain

  • [ユーザーのメールアドレス]欄には、メンバーシップのアカウントに指定したメールアドレスを指定
  • [通称]欄には任意の名前を指定
  • [ディスクに保存]を選択
  • [鍵ペア情報を指定]チェックにチェック

[続ける]ボタンをクリックしてから、次のように設定されていることを確認します。

デスクトップを指定して[保存]ボタンをクリックすれば、これで、Apple Developer Programのアカウントに紐付いたアカウント証明書が作成できました。
この証明書の有効期限も、作成してから1年間となります。また、作成するときには有効な年間メンバーシップの契約が必要です。
そのため、年間メンバーシップを更新したら、アカウント証明書も再作成しておくとよいでしょう。

Apple Development 証明書の発行

アカウント証明書が作成できたならば、Apple Developer Programのサイトにいって作業します。
事前に登録したアカウントでサインイン
「Certificate, Identifiers & Profiles」のページに移動します。
f:id:hatsune_a:20210616085707p:plain

新しいApple Development 証明書の発行

Certificatesの後ろの[+]を押して、新しい証明書を発行します。
f:id:hatsune_a:20210616091338p:plain
開発用のApple Development証明書ならば、「Apple Development」を指定します。

Apple DevelopmentとiOS App Developmentの違い

XCode 11以降はApple Developmentを指定します。
それより以前のものはiOS App Developmentを指定しますが、古いXCodeを積極的に使う理由はないので、実質「Apple Development」一択です。

Maximum number of certificates generated について

「Maximum number of certificates generated」とでているのは、すでに発行しているApple Development 証明書に紐付いている「Provisioning Profile (Development)」で有効期限切れのものがあるからです。

アカウント証明書をアップロードする

f:id:hatsune_a:20210616093534p:plain
Macで作成したアカウント証明書を選択します。
これでApple Development 証明書が作成できました。
Certificatesの一覧には、Apple Developer Programのアカウント名=メンバーシップの「Account Holder」が証明書名として表示されます。

Apple Development 証明書をMacにダウンロードする

Apple Development 証明書が作成できたので、Macにダウンロードしておきましょう。

Apple Distribution 証明書の発行

アカウント証明書が作成できたならば、Apple Developer Programのサイトにいって作業します。
事前に登録したアカウントでサインイン
「Certificate, Identifiers & Profiles」のページに移動します。
f:id:hatsune_a:20210616085707p:plain

新しいApple Distribution証明書の発行

Certificatesの後ろの[+]を押して、新しい証明書を発行します。
f:id:hatsune_a:20210616094512p:plain
発行用の証明書が必要なので、「Apple Distribution」を指定します。

Apple DistributionとiOS Distributionの違い

XCode 11以降はApple Distributionを指定します。
それより以前のものはiOS Distributionを指定しますが、古いXCodeを積極的に使う理由はないので、実質「Apple Distribution」一択です。

Apple Distribution証明書の発行上限数について

Apple Distribution証明書は、合計で3つ作成できます。
Apple Distribution証明書は、基本的にアプリごとに作成するのではなく、発行者ごと、つまり、Apple Developer Programのメンバーシップごとに1つ作るような運用イメージになります。

アカウント証明書をアップロードする

f:id:hatsune_a:20210616093534p:plain
Macで作成したアカウント証明書を選択します。
これでApple Distribution 証明書が作成できました。
Certificatesの一覧には、メンバーシップの「Team Name」が証明書名として表示されます。

Apple Distribution証明書をMacにダウンロードする

Apple Distribution証明書が作成できたので、Macにダウンロードしておきましょう。

キーチューンに登録する

Apple Develoment証明書と、Apple Distribution 証明書がダウンロードできたら、キーチューンに登録しておきましょう。
登録は簡単で、証明書をダブルクリックすればキーチューンが立ち上がって追加されます。
f:id:hatsune_a:20210616221344p:plain
これで新しい有効期限の証明書がキーチューンアクセスのログイン証明書に登録することができました。
証明書の中の秘密鍵の名前は、アカウント証明書を作成するときに認証局に証明書を要求した時の通称が設定されています。
有効期限の更新で証明書を作成した場合は、この時点で古い有効期限の証明書は削除しておきましょう。

最後に

来年の年間メンバーシップの更新時に新しい証明書を作成するときや、開発機を変更するときなども、きっと、このエントリ見ながらやると思います。忘備録大切!