Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
26
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

[Push通知]APNsの設定(サーバ編)

用意するもの

AppleID
サーバ
appIDはすでに作られてるものとします。

証明書を要求するための準備

「アプリケーション」 ->「ユーティリティ」で
キーチェーンアクセス.app を起動

キーチェーンのメニューから環境設定を呼び出す。

「メニュー」 -> 「環境設定」
証明書のタブを選択する

以下の項目のチェックを外す

  • オンライン証明書状況プロトコル(切)
  • 証明書失効リスト(切)

認証局に証明書を要求を呼び出す。

「キーチェーンアクセス」 -> 「証明書アシスタント」
->「認証局に証明書を要求」
閉じる。
証明書情報.tiff

証明書アシスタントに以下を入力

  • ユーザーのメールアドレス : 開発者のメールアドレス
  • 通称:適当な名前、何でもよい
  • CAのメールアドレス : 無記入でよい
  • 要求の処理 : ディスクに保存 と 鍵ペア情報を指定にチェック

証明書要求の保存

CertificateSigningRequest.certSigningRequest をデスクトップに保存するように設定

鍵ペア情報

鍵ペア情報.tiff
2048bit、RSA方式であることを確認して続行

完了

証明書要求が保存される。
設定結果.tiff

対象のappIDに証明書を登録する

appIDをクリック

appIDをクリックするとこんな感じに開く。
IDクリック.tiff
Editをクリックして次へ

Push Notificationを選択する

Push Notificationを選んで「Create Certificate」を選ぶ
PushNotification.tiff

はじまり

CSR_start.tiff
続ける

作った証明書リクエストを選択する

先ほど作成した「CertificateSigningRequest.certSigningRequest」を選択する
chooseCSR.tiff
選択したら「Generate」する

証明書が出来上がるのでダウンロード

ダウンロードボタンをポチッと。
証明書ダウンロード.tiff

ダウンロードしたCSRとキーチェーンを紐付ける

ダウンロードしたファイルをダブルクリックすると、キーチェーンに登録される。

サーバに登録

秘密鍵を書き出す

キーチェーンを開いて、先ほど作った証明書にフォーカスを当てる。
左下の「分類」で「証明書」でフィルターすると、フォーカスが当たってた証明書に▼が表示されるようになる。
展開すると秘密鍵が見れるようになる(ここで色々ハマったw)
p12形式で「xxx_production.p12」って感じで書きだす。
書き出したら以下コマンドを使ってpem形式に変換する。ついでにrsa形式にもする

openssl pkcs12 -in [書きだした秘密鍵].p12 -out [なんでも良い].pem -nodes -clcerts
openssl rsa -in [変換したファイル名].pem -out [変換したファイル名]_noenc.pem

キーチェーンに登録している証明書を書き出す

キーチェーンで登録した証明書にフォーカスをあてて、右クリック。
「書き出す」を選択する。
フォーマットに「.pem」を選択する
証明書書き出し.tiff

証明書ファイルの結合

作った秘密鍵と証明書を連結する

cat [証明書].pem [秘密鍵]_noenc.pem > [わかりやすいファイル名].pem

サーバに配置

最終的に出来たファイルをftpツールでもなんでもいいので、サーバの適当なディレクトリに配置する(アプリによって異なると思うので割愛)

総括

とりあえず証明書はめんどい!!
APNsに証明書設定してもエラーになるからなんでやと思ったら秘密鍵が必要だったり、秘密鍵がどこにあるかわからず右往左往したり…
微妙にAppleさん変わってたりするところが素人には厳しいところ

お世話になったサイト

APNSのpemファイル作成用のシェル関数
Apple Push Notification Serviceを使ってiOSにプッシュ通知をするために必要な証明書の準備方法
[iPhone] APNs プッシュ通知(1)デバイストークンの取得
[iPhone] APNs プッシュ通知(3)リモート通知の取得

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
26
Help us understand the problem. What are the problem?