Appleの証明書とかまとめ!

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

おばんです、New Game!ハマって原作一冊高い部類の漫画なのに一気買いしてしまった田中です。
ぎょ、業界研究です業界研究!(あとよくわかるAutoLayoutも買いました。今読んでる感じ良書です。)

IMG_4516

IMG_4520

百合 is 最高。

はじめに

はい、今回はAppleの証明書関係わかりづらすぎ!!!?
というフラストレーションからこんな記事を書きます。

「p12ってなに?」「Provisioning Profile、Certificatesって?」と、調べても「●● is ▲▲」みたいな説明で書かれてるのが無かったので一部自己解釈かもしれませんが書いてみます。
このまとめをもとに、AppleのCertificates, Identifiers & Profilesのフォームを追っていじっていくと理解が深まるのではと思います。

登場人物

CertSigningRequest

証明書要求用ファイル。CertificatesをAppleのメンバーセンターに登録するときに必要なファイル。
キーチェーン > 認証アシスタント > 認証局に証明書を要求で取得する。.certSigningRequestファイル。

Certificates

開発者登録。開発者として登録して取得した証明書をキーチェーンアクセスに登録したPCでないとビルド出来ない。.cerファイル。
DevelopmentとProductionに分かれている。

iOS App Development = 通常用

Apple Push Notification service SSL (Sandbox) = Push通知用

ProvisioningProfileのDevelopmentとCertificatesのDevelopment,
ProvisioningProfileのDistributionとCertificatesのProduction
はそれぞれ対応した関係になっている?

Devices

端末情報。開発機として登録したデバイスでないとアプリをインストールできない。(App Store申請用は関係ない)

App ID

アプリのID。Bundle IDを設定したり、Enable Servicesを設定してプッシュ通知が利用可能かなどをアプリ情報と紐付ける。

Provisioning Profile

CertificatesとDevicesとApp IDを合わせて作られたもの。iPhoneアプリの開発者・販売者を、提供元のアップルに証明してもらうためのもの。
ファイル形式は.mobileprovision。
Build Settings > Provisioning Profileでよくいじるやつ。
Provisioning ProfileにはDevelopmentとDistributionという種類が別れていて、Developmentは単純に開発用のもの。Distributionは配布用のもの。 Distribution = 配布用と言っても、App Storeに配布するのか、Ad Hocでテスト用として配布するのかが別れてきたりするので、二つ必要。

ProvisioningProfileのDevelopmentとCertificatesのDevelopment,
ProvisioningProfileのDistributionとCertificatesのProduction
はそれぞれ対応した関係になっている?

p12ファイル

Certificatesから出力できるファイル。Certificatesは証明書のみ(証明書と、必要な秘密鍵が書かれているのみ。実際の鍵は入っていない。)で、p12ファイルは秘密鍵を含めた証明書なので管理は厳重に。Admin権限をもつことと等価。プッシュサービス(Repro, Parse)などのMBaaSを利用する際にはPush通知用のこのファイルを書き出してサービス側に登録したりすることもある。

8ef77e52-e771-d6ef-3a35-b3d3edb58200

Provisioning Profile登録までの手順

  • CertSigningRequest.certSigningRequestの取得
  • Certificatesの取得
  • Certificatesをキーチェーンに登録
  • Devicesの登録
  • App IDの登録
  • Provisioning Profileの取得
  • Provisioning Profileをキーチェーンに登録

App Storeリリース用とPush通知用(開発用・βテスト用)

開発の中で本番用アプリとテスト用アプリを分けたい場面がでるかもしれません。
上記の手順と登場人物を踏まえて、Devicesはおそらくそのまま共通かと思う(必要とあらば増やしたり減らしたりすればいい)ので二つのアプリとして分けてCertificates, App IDを登録しProvisioning Profileを出力すればオーケー。

疑問

  • CertificatesのDevelopmentとProductionの違いがわからない。

まとめ

難しい。けど図にしたらなんとなくわかった(気がする)。

おまけ

CodeSigning

誰の著名か。開発の中でCode Signing Errorなどのエラーを見かけたことがある経験ある人も少なく無いと思いますが、これはProvisioning Profile(Certificates)に登録されていないアカウントでアプリをビルドしようとすることが原因。

参考