【Xcode/iOS】証明書の種類や発行方法!期限切れの対応や再発行
この記事からわかること
- Xcode/iOSアプリの証明書とは?
- 開発用と配布用の違い
- プロビジョニングプロファイルとの関係
- 有効期限が切れた場合の対応
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
iOSアプリをリリースしている人は無視できない証明書やプロビジョニングプロファイルなどのファイルたち。1人での開発であれば自動生成であまり気にせずに進めることもできますがチームでの開発になると何かと問題が発生する部分になるかと思います。今回はiOSアプリの証明書(Certificate)周りについてまとめていきたいと思います。
前提
iOSアプリでは開発や配布する上でアプリの開発者やアプリの機能(リモート通知など)にアクセスするために必要な権限、インストール可能な端末情報などを明確にする必要があります。そしてそれらの情報を「プロビジョニングプロファイル(Provisioning Profile)」と呼ばれるファイルで管理しています。
プロビジョニングプロファイルには基本的に以下の内容が含まれた状態で生成されます。作成方法は以下の記事を参考にしてください。
- 開発者の署名書
- アプリID(AppID)
- Device ID(UDID)
開発者の署名書
証明書についてはこの記事でまとめていきます。
アプリID(AppID)
「アプリID(AppID)」はアプリを一意に識別するための識別子です。App IDは開発者チームのチームIDとアプリのバンドルIDの2つの部分から構成されます。
- App ID Prefix(プレフィックス):チームID
- App ID Suffix(サフィックス):バンドルID(Bundle Identifier)
アプリIDの作成は「Certificates, IDs & Profiles」の「Identifiers」から作成することができます。作成する際にアプリのバンドルIDと権限が必要なアプリの機能の中から使用しているものにチェックを入れておきます。
詳細な作成方法は以下の記事を参考にしてください。
おすすめ記事:App IDの作成
Device ID(UDID)
「Device ID(Unique Device Identifier)」はAppleデバイスごとに割り当てられた一意の識別子です。このUDIDを使用してデバイスが他のデバイスと区別しています。
UDIDが必要になるのは開発段階で配布する時になります。Xcodeから実機へビルドしていれば自動でUDIDが登録されますが、他のデバイスを登録したい場合はUDIDを教えてもらって登録しておく必要があります。UDIDを調べる方法はググると色々出てきます。
開発者の証明書(Certificate)とは?
※ Certificateは「サーティフィケート」と読みます。
プロビジョニングプロファイルを作成する際に必要になる証明書はアプリケーションが信頼された開発者によって作成されていることを確認するためのものになります。このファイルの拡張子は「.cer」になります。
また証明書には発行から1年の有効期限が決められているため、1年ごとに新しい証明書を発行する必要があります。これは現在リリースしている場合であれば証明書の期限が切れても配信がSTOPするといったことはありませんが、アップデートしたい場合などに有効期限の切れていない証明書を使用したプロビジョニングプロファイルを用意する必要があります。
種類
開発者の証明書ファイルには大きく分けて2つの種類に分かれます。
- 開発用証明書(Development Certificate)
- 配布用証明書(Distribution Certificate)
開発用証明書(Development Certificate)
名前の通り開発段階でのみ使用できる証明書です。実機でアプリケーションをビルドするために必要になります。
配布用証明書(Distribution Certificate)
名前の通り配布でのみ使用できる証明書です。App Storeでのリリース配布やAd Hoc配布するために必要になります。
プロビジョニングプロファイルの種類
またそれに伴いプロビジョニングプロファイルも種類が分かれますが、こちらは「Ad Hoc」を追加した3つになります。
- 開発用(iOS App Development)
- Ad Hoc配布用(Ad Hoc)
- App Store配布用(App Store Connect)
作成する時のタイプ
開発用/配布用証明書の作成は「Certificates, IDs & Profiles」の「Certificates」から作成することができます。作成する際に証明書のタイプを選択することができ、選択したタイプによって開発用/配布用に分かれます。
選択できるタイプは複数ありますが、関係あるのは以下の4つほどかと思います。開発用と配布用がそれぞれ2つずつありますがXcode11以降から「Apple Development」/「Apple Distribution」に変更になっているので基本こちらを選択すればOKです。
タイプ | 種類 | 概要 |
---|---|---|
Apple Development | 開発用 | Xcode 11以降で使用 |
Apple Distribution | 配布用 | Xcode 11以降で使用 |
iOS App Development | 開発用 | Xcode 11以前で使用 |
iOS Distribution | 配布用 | Xcode 11以前で使用 |
CSRファイルとは?
開発用/配布用問わず、実際に証明書を発行するためにはCSRファイルが必要になります。「CSRファイル(Certificate Signing Request)」はデジタル証明書を発行するために必要なリクエストファイルでRSA公開鍵暗号方式(秘密鍵・公開鍵のペア)を使って作成されます。
CSRファイルには公開鍵と、申請者情報、申請者の秘密鍵を用いた署名が含まれます。
作成する手順
証明書を作成する手順は以下の通りになります。開発用/配布用で異なるのはタイプを選択するところだけになります。
- CSRファイルの作成
- 証明書(.cerファイル)の作成
CSRファイルの作成
CSRファイルはMacにデフォルトでインストールされている「キーチェーンアクセス」を使用して作成します。
キーチェーンアクセスを起動させたら上部のメニューから「キーチェーンアクセス」>「証明書アシスタント」>「認証局に証明書を要求...」をクリックします。
以下の画面になったら必要事項を記述していきます。入力できたら「続ける」をクリックします。
- ユーザーのメールアドレス:自身のメールアドレス
- 通称:任意の名前(いじらないでOK)
- CAのメールアドレス:空白のまま
- 要求の処理:ディスクに保存
- 鍵ペア情報を指定:チェック
保存先を問われるので任意の場所を指定します。私はデスクトップに「証明書」フォルダを作成しその中に格納しておきました。続いて鍵ペア情報を確認して「続ける」をクリックします。
無事に作成されたら完了です。
証明書(.cerファイル)の作成
証明書の作成は「Certificates, IDs & Profiles」から行います。
- 左メニューの「Certificates」をクリック
- をクリック
- 「該当の証明書タイプ」にチェックをいれ、「Continue」をクリック
- 「Choose File」をクリックして、先ほど作成したCSRファイルを選択し、「アップロード」をクリック
- 証明書(.cer)が作成されるので「Download」をクリック
- 「証明書」フォルダの中に格納
ダウンロードすると証明書(.cer)は自動的にキーチェーンに登録されます。Macのキーチェーンアクセスアプリを起動して「証明書」タブを確認すると該当の証明書が表示されているはずです。また正しく秘密鍵が反映されていれば証明書の中に鍵マークが表示されます。
他の開発者が証明書をインストールする場合
証明書の作成者ではなく他の開発者が共同開発のために該当の証明書を含んだプロビジョニングプロファイルを使用する場合は秘密鍵を渡して反映させる必要があります。
秘密鍵は「.p12形式(秘密鍵を含むデジタル署名形式)のファイル」に変換して渡します。まずは証明書を作成した開発者側がキーチェーンアクセスから書き出すことで.p12ファイルを作成することができます。
ここで保存をクリックするとパスワードを求められますが未入力で「OK」をクリックすればOKです。
これで.p12ファイルが作成できたのでこれを別の開発者に渡し、キーチェーンに反映させることで共同して開発や配布を行うことができるようになります。
Xcodeから証明書を発行する
証明書はXcodeからでも作成することが可能になっています。
上部メニューの「Xcode」>「Settings...」>「Accounts」を選択し、開発者アカウントを選択して、右下の「Manage Certificates...」をクリックします。
次に左下の「+」ボタンをクリックして必要な証明書を選択し「Create」をクリックして、証明書(.cer)ファイルを作成します。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。