【Swift】リモート通知実装用の証明書(cer)とプロビジョニングプロファイルの作り方

この記事からわかること
- Swiftでプッシュ通知を実装するために必要な証明書とは?
- ローカル通知とリモート通知の違い
- CSRファイルとは?
- 証明書(.cer)ファイルとは?
- プロビジョニングプロファイルとは?
- 各文書の作成方法
index
[open]
\ アプリをリリースしました /
SwiftUIで開発しているアプリに通知機能を実装する方法をまとめていきたいと思います。
iOSアプリの通知機能
iOSアプリではユーザーに対して注意を引くために通知機能を実装することが可能です。実装できるのは音を鳴らしたり、以下のようなプッシュ通知(アラート)を送信したり、アイコンにバッジをつけるなどさまざまなことが可能になっています。

プッシュ通知は基本的にはバックグラウンド(アプリが停止している状態)で実行されますが、フォアグラウンド(アプリが動作している状態)で実装することも可能になっています。
そしてiOSアプリのプッシュ通知機能にはさらにローカル通知とリモート通知の2種類に分かれます。
ローカル通知
ローカル通知とはオフラインで実行される通知機能のことを指します。デバイス内からプッシュ通知リクエストを送信し、デバイス内で処理されて通知が届くような仕組みになっています。
ローカル通知は事前準備などは必要なく、Swift内でコードを記述するだけで実装することができます。
通知リクエストを送信するタイミングはアプリ内からしか操作できません。リマインダーやアラーム機能など自分でセットして使用するプッシュ通知などはこのローカル通知を使用して実装されています。
おすすめ記事:【SwiftUI】通知機能の実装方法!ローカル通知とリモート通知の違い
リモート通知
リモート通知とはオンラインで実行される通知機能のことを指します。ローカル通知とは異なり、プッシュ通知リクエストをオンライン上から送信し、デバイス内で処理されて通知が届くような仕組みになっています。
仕組みをもう少し詳しくみて見ると以下の通りになります。

参考文献:リモート通知サーバーのセットアップ
APNs(Apple Push Notification service)と呼ばれるAppleが運営するサービスを介してプッシュ通知は配信されます。そのためにはまずデバイスの登録を行い、デバイストークンを発行、そのトークンをサーバーに登録するといった前準備をいくつかこなすことでそのサーバーから通知リクエストを送信することが可能になります。
リモート通知を使用することでユーザーの操作などではなく、開発者や運営者の任意のタイミングでアプリに対して通知を送信することができるようになります。
iOSアプリでリモートプッシュ通知を利用可能にするために必要な準備
APNsを介することは分かりましたがなかなか全体像が掴みにくいのでもう少し整理してみます。そもそもiOSアプリ自体にリモートプッシュ通知機能を追加するためには何が必要か洗い出します。
- 通知送信用のサーバーの準備
- 通知送信用サーバーへAPNsの認証
- 「リモートプッシュ機能」の利用権限を付与したAppID
- そのApp IDが設定されたプロビジョニングプロファイル
- Xcode上でプロビジョニングプロファイルの反映
- Xcode上で「リモートプッシュ機能」の利用権限の追加
通知送信用のサーバーの準備
通知送信用のサーバーにはFirebaseやニフティクラウド(ニフクラ)などのクラウドサービスを使用します。好きなサービスに登録しておきましょう。
おすすめ記事:【Swift/Firebase】リモートプッシュ通知の実装方法!Cloud Messagingの使い方
通知送信用サーバーとAPNsの認証手段
それらのサービス側とAPNsを連携させるためにはAPNsの認証が必要になるので、サーバー側にデジタルファイル形式の証明書(key)をアップロードする必要があるようです。
Xcode(iOSプロジェクト)への反映
作成したプロビジョニングプロファイルはXcodeへ反映させる必要があります。また「リモートプッシュ機能」の利用権限の追加も必要になるので忘れないようにしてください。
一連の実装の流れ
リモート通知を実装するためにさまざまな準備が必要なことが分かりました。今回の目的はまとめると以下の2つです。
- プロビジョニングプロファイルの作成→反映
- APNs用証明書(.p12)の作成→反映(またはp8ファイルでも可)
リモートプッシュ通知の認証には「APNs用証明書(.p12ファイル)」を使用した方法以外にも「APNs用Key(.p8ファイル)」を使用した方法もあります。APNs用Keyによる認証の方が最新の方法になり、公式にも推奨されているのでそちらを使用した方が良いかもしれません。
その場合はこの記事のp12ファイルのところのみをp8ファイルに置き換えてください。その際には以下の4番と5番の作成は不要になります。
おすすめ記事:【Swift】リモート通知実装用(APNs)のKeyの作成方法!Certificate private key for signing
「プロビジョニングプロファイル」と「APNs用証明書(.p12)」を作成するためには最終的に以下の5つのファイルが必要になります。

- CSRファイル(初回のみ)
- 開発者用ビルド証明書(.cerファイル)(初回のみ)
- プロビジョニングプロファイル
- APNs用証明書(.cerファイル)
- APNs用証明書(.p12ファイル)
- (中間証明書:人による)
プロビジョニングプロファイルを作成するために「1.2」が、APNs用証明書(.p12)を作成するために「1.4.6」が必要になります。
今回は両方の作成を一連の流れとして作成していきますのでゆっくり慎重に作成していきましょう。
実装の流れ
- iOSプロジェクトの作成
- CSRファイルの作成
- 開発者用ビルド証明書(.cerファイル)の作成
- App IDの作成
- (デバイスの登録)
- プロビジョニングプロファイルの作成
- APNs用証明書(.cerファイル)の作成
- (中間証明書の取得→反映)
- APNs用証明書(.p12ファイル)の作成
ファイルの概要や詳細はひとまずおいといて生成する流れを一気に見ていきます。今回は開発用の証明書を作成していきます。またこの作業を行うにはApple Developer Program(有料)への登録が必要になります。
おすすめ記事:Apple Developer Programとは?登録方法や費用と手順
1.iOSプロジェクトの作成
まずは対象となるiOSプロジェクトを作成しておきます。Xcodeから適当に作っておいてください。

ここは特に解説しませんが今回はinterfaceを「Storyboard」で作成しておきます。また「Bundle Identifier」は後ほど多用するのでコピーしてどこかにメモしておきます。
2.CSRファイルの作成
CSRファイルはXcodeから作成していきます。「キーチェーンアクセス」からも作成することが可能ですが、紐付けがうまくいかないことがあるのでXcodeからの作成をお勧めします。
上部メニューの「Xcode」>「Settings...」>「Accounts」を選択し、開発者アカウントを選択して、右下の「Manage Certificates...」をクリックします。

次に左下の「+」ボタンをクリックして必要な証明書(開発用(Development)と配布用(Distribution))を選択し「Create」をクリックして、CSR(証明書署名要求)ファイルを作成します。

Apple Developer Member Centerにアクセスして「Certificates, IDs & Profiles」をクリックし左メニューの「Certificates」内に先ほど生成したCSRファイルが追加されているはずです。ダウンロードしてデスクトップに保存しておきます。
2023/8/16追記:この作業を行うとCSRファイルではなく次に作成する開発者用ビルド証明書(.cerファイル)が作成されていることがありました。その場合はスキップして「4.App IDの作成」へ進んでください。
3.開発者用ビルド証明書(.cerファイル)の作成
開発者用ビルド証明書(2つ目のファイル)を作成するためにはまずはApple Developer Member Centerにログインします。

- 「Certificates, IDs & Profiles」をクリック
- 左メニューの「Certificates」をクリック
- をクリック
- 「iOS App Development」にチェックをいれ、「Continue」をクリック
- 「Choose File」をクリックして、先ほど作成したCSRファイルを選択し、「アップロード」をクリック
- 開発者用証明書が作成されるので「Download」をクリック
- 「証明書」フォルダの中に格納
ここまでの作業は初回のみでOKです。作成した2つのファイルは削除せずに保管しておきましょう。以下からはアプリごとに対してリモート通知を許可するための作業になります。
4.App IDの作成
引き続きApple Developer Member Centerから「App ID」を作成していきます。ここではプロジェクトの「Bundle Identifier」が必要になります。
- 「Certificates, IDs & Profiles」をクリック
- 左メニューの「Identifiers」クリック
- をクリック
- 「App IDs」を選択して「Continue」ボタンをクリック
- 「Select a type」と表示されたら「App」を選択して「Continue」ボタンをクリック
- 「Description」に「IDの説明」を入力(例:TestNoticeApp)
- 「Bundle ID」として「Explicit」を選択
- 下の入力欄にアプリ作成時に設定した「Bundle Identifier」を入力
- 「Capabilities(アプリ実行に必要な権限)」の中の「Push Notifications」にチェック
- 「Continueボタン」をクリック
- 「Push Notifications」にチェックが入っているか確認して問題なければ
- 「Registerボタン」をクリック

5.デバイスの登録
デバイスの登録はiOSアプリ開発を進めていてXcodeから実機へビルドしたことがある人はすでに登録されている場合もあると思います。「Devices」から登録されているか確認してみてください。

おすすめ記事:【Xcode】実機のiPhoneに自作アプリをビルドする方法!
未登録の場合
- 「Certificates, IDs & Profiles」をクリック
- 左メニューの「Devices」クリック
- をクリック
- 「Platform」は「iOS, tvOS, WatchOS」を選択
- 端末の「Device Name(任意の名称でOK)」と「Device ID(UDID)」を入力
- Device ID(UDID)の確認のためMacとiPhoneをライトニングケーブルで接続
- Xcodeを開く
- 「Window」>「Devices and Simulators」をクリック
- 「identifier」がUDIDなのでコピペ
- 「Continue」をクリック
- 「Register」をクリック
6.プロビジョニングプロファイルの作成
プロビジョニングプロファイルもApple Developer Member Centerから作成します。
- 「Certificates, IDs & Profiles」をクリック
- 左メニューの「Profiles」クリック
- をクリック
- 「Development」の「Apple Development」を選択し、「Continue」をクリック
- 対象のApp IDを選択し、「Continue」をクリック
- 対象の開発用証明書を選択し、「Continue」をクリック(識別しにくいので注意)
- 対象の端末を選択し、「Continue」をクリック
- 最後に「Provisioning Profile Name」にファイル名入力(例:TestNoticeApp Provisioning Profiles)
- 内容を確認し「Generate」をクリックします
- プロビジョニングプロファイルが作成されたので「Download」をクリック
- 「証明書」フォルダの中に格納



4番目の作業時に「Apple Development」と「iOS Development」がありますが「iOS Development」はXcode11以前を使用している場合に選択します。
プロビジョニングプロファイルが作成できたらXcode(アプリプロジェクト)に反映させていきます。「TARGETS」>「Signing & Capabilities」から「Automatically manage signing」のチェックを外し、None
となっている「Provisioning Profiles」を先ほどダウンロードしたプロビジョニングプロファイルに変更します。

おすすめ記事:【Xcode】プロビジョニングプロファイルとは?作成と反映方法
7.APNs用証明書(.cerファイル)の作成
p8ファイルを使用する場合はこのステップは飛ばしてください。
APNs用証明書(.cerファイル)も開発者用証明書と似たような流れで作成していきます。
- 「Certificates, IDs & Profiles」をクリック
- 左メニューの「Certificates」をクリック
- をクリック
- 下にスクロールし「Service」の「Apple Push Notification service SSL (Sandbox)」をチェックを入れて「Continue」をクリック
- 対象のApp IDを選択し、「Continue」をクリック
- 対象のCSRファイルを選択し、「Continue」をクリック
- APNs用証明書(.cer)が作成されるので、「Download」をクリック
- 「証明書」フォルダの中に格納

8.中間証明書の取得→反映
p8ファイルを使用する場合は開発者用証明書(.cer)のみ信頼されているか確認してください。
続いてAPNs用証明書(.p12ファイル)を作成するのですがその前に開発者用証明書(.cer)とAPNs用証明書(.cer)が信頼されているかをチェックしてみます。
各証明書をキーチェーンアクセスで開きたいのでダウンロードしたファイルをダブルクリックもしくは「このアプリケーションで開く」>「キーチェーンアクセス」を選びます。すでにキーチェーンアクセスを開いている場合はうまく反映されないことがあるので一度キーチェーンアクセスを閉じてから実行してみてください。
キーチェーンアクセスで開いた場合に以下のように「証明書は信頼されていません」と出ている場合に限り中間証明書の取得→反映が必要です。

中間証明書は上記リンクよりダウンロードできるので必要なものをダウンロードし「証明書」フォルダに格納後ダブルクリックすることで反映させることができます。
- 開発者用証明書(.cer):Worldwide Developer Relations - G3 (Expiring 02/20/2030 00:00:00 UTC)
- APNs用証明書(.cer):Worldwide Developer Relations - G4 (Expiring 12/10/2030 00:00:00 UTC)
反映後に以下のように「この証明書は有効です」と表示されていればOKです。元々表示されていた場合は中間証明書の手順はスキップしてください。

9.APNs用証明書(.p12ファイル)の作成
p8ファイルを使用する場合はこのステップは飛ばしてください。
最後にAPNs用証明書(.p12ファイル)を作成します。キーチェーンアクセスからAPNs用証明書(.cer)を開き証明書側にカーソルを合わせて「右クリック」し、「"Apple Sand..."を書き出す..」をクリックします。

任意のファイル名を入力し保存先を選択して保存します。

ここで保存をクリックするとパスワードを求められますが未入力で「OK」をクリックすればOKです。

あとはこの「.p12ファイル」を該当のクラウドサービスにアップロードすれば完了です。Firebaseでのアップロード方法は以下を参考にしてください。
おすすめ記事:【Swift/Firebase】リモートプッシュ通知の実装方法!Cloud Messagingの使い方
CSRファイルとは?
CSRとはCertificate Signing Requestの略称で日本語に直すと「証明書署名要求」になります。このファイルの1番の役割はiOSアプリ(またはサーバー)とWebブラウザ間の暗号化通信(HTTPs)のために必要なSSL(Secure Sockets Layer)証明書に含まれる公開鍵を発行することです。
CSRファイル自体はiOSアプリ(またはサーバー)サイド側から発行することができ、CSRファイルを使用して証明機関(CA)を介して証明書(iOSアプリの証明書)を発行できます。
CSRファイルにはアプリの公開鍵やアプリの情報(アプリ名や組織名など)、デジタル署名などが含まれています。
証明書とは?
ここでいう証明書はサーバーなら「サーバー証明書」、iOSアプリなら「アプリの証明書」と言うことになります。名称は異なりますが自身が正当なものであることを証明するためのものという目的は同じです。
発行するためにはCSRファイルが必要であり、証明機関(Certificate Authority:CA)から発行されます。
今回のリモート通知を実装するために開発用のアプリ証明書を作成しました。
まとめ
- CSRファイルとは証明書を発行するために必要なファイル
- CSRファイルはiOSアプリ(キーチェーンアクセス)側から作成
- 証明書は正当なものである証明になるもの
- 証明機関(CA)によって発行
.p12形式の証明書とは?
.p12ファイルは、証明書を格納するために使用される証明書のデジタルファイル形式の1つです。
正確にはPKCS#12(Public-Key Cryptography Standards #12)という形式で、証明書と関連する秘密鍵を含むデジタル署名形式であり、拡張子が「.pfx」または「.p12」で終わります。
他にも形式はいろいろありますが、PKCS#12形式はセキュリティが高く、ファイルサイズが大きくなるやすいことが特徴です。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。