😎

【iOS】Distribution証明書期限切れ対応

2022/04/27に公開

はじめに

Apple Developerから以下のメールが届いた。

「現在ご利用のDistribution証明書の有効期限まであと30日になりました。」 と記載があるが、どうもAppleStore配信用の証明書の有効期限※が近いようだ。

※証明書の期限が1年となっている。
Apple DeveloperコンソールのCertificatesタブから各種証明書の有効期限が確認可能

既存の配信済みアプリには特段影響がないが、今後のアプデや新規配信には新しい証明書が必要になってくるとのこと。
これを機に更新を行ってみよう。
https://developer.apple.com/jp/support/certificates/

大まかな流れ

証明書の種類

証明書の種類は以下公式のリンクを参照
https://help.apple.com/developer-account/?lang=ja#/dev52fdd1ce5
自分の場合はFlutterでモバイルアプリの開発用を行っているため、
以下証明書があれば良さそう。

・Apple Development:開発用証明書(実機でビルドする際に使用)
・Apple Distribution:本番(配信)用証明書
※iOS DevelopmentおよびiOS DistributionについてはXcode11未満の開発時に使用する証明書のため、紛らわしいが上記証明書を作成すればOK

そもそもこの証明書ってなに?

Apple Developer Programのメンバーであることを証明するための証明書(身分証明書)とざっくり理解。
デジタル証明書の理解が合っているかわからないが、おそらくこの証明書を以下の流れで使用するのであろう。

開発者:プロジェクトのパッケージングをする際に、自身の秘密鍵で暗号化し提出
Apple:事前に開発者から連携された公開鍵で復元(検証)を行う
正しく復元できれば、該当のユーザーであることが証明できる。

じゃあどうすんの?

証明書の発行のために、自分の秘密鍵と公開鍵のペアを作成し、
Apple側に公開鍵を連携する必要がある。
公開鍵の提供には、CSR(証明書署名要求)が必要となり、これをAppleに連携することで証明書が発行されるらしい。
なんだかめんどくさそうなので、手順をちゃんとまとめる。

手順

CSR(証明書署名要求)の作成

Macをお使いの方は、キーチェーンアクセスを使用する。
※Launchpadのその他にあるはず。

1.開いたら、メニューバーから以下を選択

2.ウィンドウが開くので、以下の情報を入力
・ユーザーのメールアドレス:Apple IDのメールアドレスを入力
・通称:keyチェーンに表示される名称(任意)
・CAのメールアドレス:記載不要
・要求の処理:「ディスクに保存」にチェック

  1. 「続ける」を選択し、名前はそのままで保存
    「CertificateSigningRequest.certSigningRequest」というファイルが作成される。

証明書の作成

1.Apple DeveloperコンソールのCertificatesタブへ移動する。

2.青いプラスボタンを押すと以下の画面に遷移するので、作成したいタイプを選択する。
今回は「Apple Distribution」を選択してみる。

3.ファイルを選択する画面が表示される。
こちらで先ほど作成した「CertificateSigningRequest.certSigningRequest」を選択しよう。

4.問題なければ、Download Your Certificateというページに遷移する。
忘れずにダウンロードを行うと「distribution.cer」というファイルがダウンロードできる。
ダブルクリックすることで、自身のキーチェーンストアに証明書が登録される。

リリース済みのアプリがある場合

Apple DeveloperコンソールのProfilesタブへ移動すると、過去にリリースしたアプリのプロファイル(証明書を含めたアカウント情報)の有効期限が間近に迫っているはず。

アプリの数分以下手順を繰り返す。
1.プロファイルを選択し、Editボタンを押下
2.Certificatesに先ほど作成した、証明書があるのでそちらを選択しSaveを押下
3.Generate a Provisioning Profileというページに移動するので、忘れずにダウンロードを行う。
4.ダウンロードした「.mobileprovision」の拡張子ファイルをダブルクリックすると、作成したプロファイルがXcodeに登録される。

Discussion