APNS用の.pemファイルを作成しますか?


177

APNペイロードデータ用にホスティングサーバーに保存される.pemファイルを作成するにはどうすればよいですか?


1
.pemの代わりに.p12をapnsに使用できますか?
Gajendra K Chauhan 2016年

.pemのFYI定義:serverfault.com/a/21158/193377 PEM自体は証明書ではなく、データをエンコードする方法にすぎません。....アンカー行があり、7ビットのクリーンであるため、電子メールメッセージの本文に貼り付けても安全です。
AnneTheAgile 2017

回答:


365

これが私がやったことです、From:blog.boxedice.comとによる「iPhone Advanced Projects」の第10章です。

キーチェーンにaps_developer_identity.cerを使用:

  1. ローカルMacとログインキーチェーンからキーチェーンアクセスを起動し、[証明書]カテゴリでフィルタリングします。「Apple Development Push Services」と呼ばれる拡張可能なオプションが表示されます
  2. 「Apple Development Push Services」を右クリックし、「Apple Development Push Services ID123」をエクスポートします。apns-dev-cert.p12アクセスできる場所にこれをファイルとして保存します。パスワードを入力する必要はありません。
  3. 次のコマンドは、PEM形式(Privacy Enhanced Mail Security Certificate)のMacのターミナルで証明書を生成します。

    openssl pkcs12 -in apns-dev-cert.p12 -out apns-dev-cert.pem -nodes -clcerts

サーバーで、chmod 400を使用して、この暗号化されていないキーのファイル権限を設定します。


3
上記の手順を実行し、現在は機能しています。証明書とphpスクリプトをローカルWebサーバー(Xampp)に保持しています。デバイストークンを取得でき、phpスクリプトで使用しています。phpスクリプトは、ペイロードデータに接続して送信できます。しかし、それでも私はプッシュ通知を取得できません。何が問題ですか ?通知が届くまでに時間がかかりますか???
Biranchi 2009年

12
Mavericks(10.9)のキーチェーンアクセスでは、.pemとしてエクスポートするオプションがあります。キーチェーンアクセス内の「Apple Development / Production iOS Push Services certificate」を右クリックして、エクスポートすることを選択します。ファイル形式を.pem-doneに変更します。エクスポートオプションとしても利用できます:.p7b&.p12
tylerl

5
.pemは無効になっています(ヨセミテベータ7)。私は.PEMを作成するいくつかの問題を持って、私はそれが言うそれを開いたときに代わりにdevの配布のためである
クリスティBăluţă

2
.pemは無効化されていませんが、p12として保存できません。これは次のようになります。i.imgur.com
FooBar

2
キーチェーンアクセスアプリを使用するmacOS 10.14 Mojaveの場合、「Apple Push Services:com.yourBundleIdentifier証明書」をファイル形式「プライバシー強化メール(.pem)」にエクスポートして、いつでも保存できます。
5uper_0leh

226

開発フェーズ:

手順1: 証明書.p12から証明書.pemを作成する
openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12

ステップ2: Key .p12からKey .pemを作成する
openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12

ステップ3(オプション): 2番目のステップで要求されたパスフレーズを削除する場合
openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem

ステップ4:次に、アプリの開発フェーズのプッシュ通知に必要な開発.pemを取得するために、キー.pemと証明書.pemをマージする必要があります。

3番目のステップが実行された場合は、以下を実行します。
cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem

3番目のステップが実行されなかった場合は、以下を実行します。
cat apns-dev-cert.pem apns-dev-key.pem > apns-dev.pem

手順5:証明書の有効性とAPNSへの接続を確認する

3番目のステップが実行された場合は、以下を実行します。
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key-noenc.pem

3番目のステップが実行されなかった場合は、以下を実行します。
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key.pem

生産段階:

手順1: 証明書.p12から証明書.pemを作成する
openssl pkcs12 -clcerts -nokeys -out apns-pro-cert.pem -in apns-pro-cert.p12

ステップ2: Key .p12からKey .pemを作成する
openssl pkcs12 -nocerts -out apns-pro-key.pem -in apns-pro-key.p12

ステップ3(オプション): 2番目のステップで要求されたパスフレーズを削除する場合
openssl rsa -in apns-pro-key.pem -out apns-pro-key-noenc.pem

ステップ4:次に、アプリのプロダクションフェーズでプッシュ通知に必要なプロダクション.pemを取得するために、キー.pemと証明書.pemをマージする必要があります。

3番目のステップが実行された場合は、以下を実行します。
cat apns-pro-cert.pem apns-pro-key-noenc.pem > apns-pro.pem

3番目のステップが実行されなかった場合は、以下を実行します。
cat apns-pro-cert.pem apns-pro-key.pem > apns-pro.pem

手順5:証明書の有効性とAPNSへの接続を確認します。

3番目のステップが実行された場合は、以下を実行します。
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key-noenc.pem

3番目のステップが実行されなかった場合は、以下を実行します。
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key.pem


5
ありがとう、これは私のためにここで働いた唯一のものです。
Erik Villegas、2015年

6
これを私の貴重な金庫に保存しました!:P史上最高の答え!!
2015

3
あなたはこの作品が神に感謝している神です。投票する。段階的にそれを作成する方法について深く掘り下げているので、これは答えになるはずです
MNM

2
@Rahul Sharmaの回答では期待どおりの結果が得られなかったため、これは受け入れられる回答になるはずですが、この回答は完璧でした。
Nowdeen

証明書の有効性を確認するために私の時間を節約していただきありがとうございます。これは受け入れられた回答であるはずです@Biranchi
Sourabh Sharma

59

手順:

  1. キーチェーンアクセスを使用してCSRを作成する
  2. 秘密キーを使用してキーチェーンアクセスを使用してP12を作成する
  3. APNSアプリIDと証明書

これにより、3つのファイルが得られます。

  • CSR
  • p12ファイルとしての秘密鍵(PushChatKey.p12
  • SSL証明書 aps_development.cer

ファイルをダウンロードしたフォルダー(私の場合はデスクトップ)に移動します。

$ cd ~/Desktop/

.cerファイルを.pemファイルに変換します。

$ openssl x509 -in aps_development.cer -inform der -out PushChatCert.pem

秘密鍵の.p12ファイルを.pemファイルに変換します。

$ openssl pkcs12 -nocerts -out PushChatKey.pem -in PushChatKey.p12

インポートパスワードを入力:

MAC verified OK Enter PEM pass phrase: Verifying - Enter PEM pass phrase:

opensslで読み取れるように、最初に.p12ファイルのパスフレーズを入力する必要があります。次に、PEMファイルの暗号化に使用する新しいパスフレーズを入力する必要があります。このチュートリアルでも、PEMパスフレーズとして「pushchat」を使用しました。より安全なものを選択する必要があります。注:PEMパスフレーズを入力しない場合、opensslはエラーメッセージを表示しませんが、生成された.pemファイルには秘密鍵が含まれません。

最後に、証明書とキーを1つの.pemファイルに結合します。

$ cat PushChatCert.pem PushChatKey.pem > ck.pem


22

ターミナルアプリケーションを起動し、プロンプトの後に次のコマンドを入力します

  openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes

1
p12を生成したら、これが答えになります。
Stone

10

->> Apple自身のチュートリアル <<-は、私が遭遇した唯一の作業セットです。それは単純明快で、Linux phpサーバーとWindows phpサーバーの両方で見事に機能することを確認できます。

5ステップのペム作成プロセスは、ページの下部にあります。


はい!簡単なチュートリアルに従ってください。ただ1つの単純なopensslコマンド。重要かどうかはわかりませんが、APNSに接続しているサーバーにSSHで接続してコマンドを実行しました。
tylerl 2014

1
@ tylerl、PEMは任意のマシンから生成できます-PEMが存在するサーバーである必要はありません。
capikaw 2014

PHPコードがデプロイされているサーバー自体でこのプロセスを実行する必要がありますか?または、Macから生成された.pemファイルを使用できますか?
Jatin

4
2015
Nicolas Miari、



4

注:これらのタスクを実行するには、App Store Connectにチームエージェントまたは管理者の役割が必要です。App Store Connectのチームの一員でない場合は、おそらく影響はありません。

iOSアプリケーションにプッシュ通知を送信するには、暗号化キーを作成する必要があります。これまでは、SSLキーと証明書を使用する煩雑なプロセスでした。各SSL証明書は、単一のiOSアプリケーションに固有のものでした。2016年にAppleは、より信頼性が高く使いやすい新しい認証キーメカニズムを導入しました。新しい認証キーは、iOSアプリよりも柔軟でメンテナンスが簡単で、より多くのアプリケーションに適用できます。

認証キーが導入されてから何年も経っていますが、すべてのサービスがそれらをサポートしているわけではありません。FireBaseとAmazon Pinpointは認証キーをサポートしています。Amazon SNS、Urban Airship、Twilio、およびLeanPlumにはありません。多くのオープンソースソフトウェアパッケージは、認証キーをまだサポートしていません。

必要なSSL証明書を作成し、公開鍵と秘密鍵を含むPEMファイルとしてエクスポートするには:

  1. 証明書、識別子、プロファイルに移動します
  2. アプリIDを作成または編集します。
  3. アプリIDのプッシュ通知を有効にする
  4. SSL証明書をアプリIDに追加する
  5. 証明書をPEM形式に変換する

Apple Developer Center WebサイトでアプリのSSL証明書をすでに設定している場合は、スキップして証明書をPEM形式に変換することができます。そうでない場合は、あなたが問題に実行されることに注意してくださいまた、アップルにアップロードされた署名要求を作成したMac上で生成された秘密鍵を持っています。

その秘密鍵の追跡を失わないようにする方法を確認するために読んでください。

証明書、識別子、プロファイルに移動します

Xcodeは、プッシュ通知の証明書またはキーを制御しません。アプリのキーを作成してプッシュ通知を有効にするには、Apple Developer Center Webサイトにアクセスする必要があります。アカウントの証明書、識別子、プロファイルセクションは、アプリIDと証明書を制御します。

証明書とプロファイルにアクセスするには、有償のApple Developer Programメンバーシップを持っているか、そうしたチームのメンバーである必要があります。

  1. Apple Developer Webサイトにログインします。 ここに画像の説明を入力してください
  2. アカウントに移動し、次に証明書、識別子、プロファイルに移動します。 ここに画像の説明を入力してください

アプリIDを作成する

プッシュ通知を使用するアプリは、ワイルドカードアプリIDまたはプロビジョニングプロファイルを使用できません。各アプリでは、プッシュ通知を有効にするためにApple Developer CenterポータルでアプリIDレコードを設定する必要があります。

  1. 識別子の下のアプリIDに移動します
  2. バンドルIDを使用してアプリを検索します。すでに存在している可能性があります。
  3. アプリの既存のアプリIDがない場合は、(+)ボタンをクリックして作成します。
  4. [ App ID Suffix]セクションで[ Explicit App ID]を選択します。 ここに画像の説明を入力してください
  5. アプリのバンドルIDを入力します。
  6. 一番下までスクロールして、プッシュ通知を有効にします。 ここに画像の説明を入力してください
  7. 続行をクリックします。
  8. 次の画面で、[ 登録 ]をクリックしてアプリIDの作成を完了します。 ここに画像の説明を入力してください

アプリIDのプッシュ通知を有効にする

  1. 識別子の下のアプリIDに移動します
  2. アプリIDをクリックして詳細を表示し、一番下までスクロールします。 ここに画像の説明を入力してください
  3. 編集をクリックします ここに画像の説明を入力してください
  4. アプリID設定画面で、プッシュ通知まで下にスクロールします ここに画像の説明を入力してください
  5. チェックボックスを選択してプッシュ通知を有効にします。 ここに画像の説明を入力してください

プッシュ通知用のSSL証明書の作成は、いくつかのタスクのプロセスです。各タスクにはいくつかのステップがあります。これらのすべては、P12またはPEM形式でキーをエクスポートするために必要です。続行する前に手順を確認してください。

SSL証明書をアプリIDに追加する

  1. [開発SSL証明書]で[ 証明書の作成 ]をクリックします。これは、後で本番環境でも行う必要があります。
  2. Appleから証明書署名リクエストの作成を求められます ここに画像の説明を入力してください

証明書を作成するには、Macで証明書署名要求(CSR)を作成し、それをAppleにアップロードする必要があります。

後でこの証明書をpkcs12(別名p12)ファイルとしてエクスポートする必要がある場合は、同じMacのキーチェーンを使用する必要があります。署名リクエストが作成されると、Keychain Accessはデフォルトのキーチェーンに一連のキーを生成します。これらのキーは、Appleが署名リクエストから作成する証明書を操作するために必要です。

開発に使用される資格情報専用の別のキーチェーンを用意することをお勧めします。これを行う場合は、証明書アシスタントを使用する前に、このキーチェーンがデフォルトに設定されていることを確認してください。

開発資格のキーチェーンを作成する

  1. Macでキーチェーンアクセスを開く
  2. 、ファイルメニューの選択新しいキーホルダーを...
  3. キーチェーンに「共有開発」などのわかりやすい名前やアプリケーションの名前を付けます

証明書署名要求(CSR)を作成する

証明書署名要求を作成すると、証明書アシスタントはデフォルトのキーチェーンに2つの暗号化キーを生成します。キーが正しいキーチェーンにあるように、開発キーチェーンをデフォルトにすることが重要です。

  1. Macでキーチェーンアクセスを開きます。
  2. キーチェーンのリストで開発キーチェーンをコントロールクリックします
  3. [ キーチェーンを「共有開発」にデフォルトにする]を選択します ここに画像の説明を入力してください
  4. キーチェーンアクセスメニューを選択証明書アシスタントをし、認証局に証明書を要求...サブメニューから。 ここに画像の説明を入力してください
  5. 証明書アシスタントが表示されたら、[ディスクに保存]をオンにします。 ここに画像の説明を入力してください
  6. Apple Developer Programメンバーシップに関連付けられている電子メールアドレスを[User Email Address]フィールドに入力します。
  7. 共通名」フィールドにキーの名前を入力します。一般名の一部としてアプリのバンドルIDを使用することをお勧めします。これにより、どのアプリにどの証明書とキーが属しているかが簡単にわかります。
  8. 続行をクリックします。証明書アシスタントは、署名要求をファイルに保存するように要求します。
  9. キーチェーンアクセスで、「ログイン」キーチェーンを再びデフォルトにします。

署名リクエストを作成すると、キーのペアが生成されました。署名リクエストがアップロードされる前に、開発キーチェーンにキーがあることを確認してください。それらの名前は、署名リクエストで使用される共通名と同じになります。

ここに画像の説明を入力してください

証明書署名要求(CSR)をアップロードする

証明書署名要求が作成されたら、それをApple Developer Centerにアップロードします。Appleは署名リクエストからプッシュ通知証明書を作成します。

  1. 証明書署名リクエストをアップロードする
  2. Appleが作成した証明書を証明書署名リクエストからダウンロードする ここに画像の説明を入力してください
  3. キーチェーンアクセスで、キーチェーンのリストから開発キーチェーンを選択します
  4. [ファイル ]メニューから[ アイテムのインポート... ]を選択します ここに画像の説明を入力してください
  5. Appleからダウンロードした証明書ファイルをインポートする

これで、開発キーチェーンのキーチェーンアクセスの[My Certificates]の下に、秘密鍵を含むプッシュ証明書が表示されます。

ここに画像の説明を入力してください

この時点で、開発キーチェーンをバックアップする必要があります。多くのチームは、安全なUSBドライブにプッシュ証明書を保持し、内部バージョン管理に取り組み、Time Machineのようなバックアップソリューションを使用しています。開発キーチェーンには個人のコード署名資格情報が含まれていないため、異なるチームメンバー間で共有できます。

キーチェーンファイルはにあり~/Library/Keychainsます。

サードパーティのプッシュサービスには、Privacy Enhanced Mail(PEM)形式の証明書を必要とするものと、公開鍵暗号化標準#12(PKCS12またはP12)を必要とするものがあります。Appleからダウンロードした証明書を使用して、これらの形式で証明書をエクスポートできます。ただし、秘密鍵を保持している場合のみです。

証明書をPEM形式に変換する

  1. キーチェーンアクセスで、以前に作成した開発キーチェーンを選択します。
  2. [ マイ証明書]でプッシュ証明書を選択します。秘密鍵が必要です。![CERプッシュ証明書のダウンロード](keychain / import complete.png)
  3. [ファイル ]メニューから[ アイテムのエクスポート... ]を選択します ここに画像の説明を入力してください
  4. 開いた保存パネルで、ファイル形式としてプライバシー強化メール(.pem)を選択します。
  5. ファイルを保存します

3

私はもっ​​と簡単な解決策を提案します。Certifireを使用してください
Certifireは、数秒でワンクリックでAppleプッシュ通知証明書を生成するmacOSアプリケーションです。

手順は次のとおり
です。1.アプリをダウンロードします。
2. Apple Developer Accountの認証情報を使用してログインします。
3.アプリIDを選択します
4. [生成]ボタンをクリックします
5.完了です!

APN証明書は.pem形式と.p12形式で取得されます。さらに、.pemと.p12も結合されます(key + cert)。
さらに、これらすべての証明書のパスフレーズなしのバージョンも取得できます。

ここに画像の説明を入力してください

ここに画像の説明を入力してください


2

これは、OpenSSLをインストールした後のWindows 7での方法です(リンクはWin32インストーラーに移動し、ライトバージョンではなく最新バージョンを選択します)。

この方法では.cer、Appleからダウンロードしたファイルのみが必要です。

c:\OpenSSL-Win32\bin\openssl.exe x509 -in aps_development.cer -inform DER -out developer_identity.pem -outform PEM

これでファイルが作成され、秘密鍵も追加する必要があります。

----- BEGIN PRIVATE KEY -----
MIIEuwIBADANBgkqhk .... etc
MIIEuwIBADANBgkqhk .... etc
MIIEuwIBADANBgkqhk .... etc
MIIEuwIBADANBgkqhk .... etc
----- END PRIVATE KEY -----
----- BEGIN CERTIFICATE -----
AwIBAgwIBADAwIBADA .... etc
AwIBAgwIBADAwIBADA .... etc
AwIBAgwIBADAwIBADA .... etc
----- END CERTIFICATE -----

それでおしまい。


2

キーチェーンアクセスにすでにapns p12ファイルがある場合、.Pemファイルを作成する最も簡単な方法があります。

端末を開き、以下のコマンドを入力します。

Devlopment openssl pkcs12 -in apns-div-cert.p12 -out apns-div-cert.pem -nodes -clcertsの場合

本番用 openssl pkcs12 -in apns-dist-cert.p12 -out apns-dist-cert.pem -nodes -clcerts

P12ファイルの名前をapns-div-cert.p12に変更します。それ以外の場合は、ファイル名を入力する必要があります。ありがとう!!


1

ファイルのopenssl作成に必要なコマンドを覚えていない.pemので、プロセスを簡略化するために次のbashスクリプトを作成しました。

#!/bin/bash
if [ $# -eq 2 ]
then
    echo "Signing $1..."

    if ! openssl pkcs12 -in $1 -out $2 -nodes -clcerts; then
        echo "Error signing certificate."
    else
        echo "Certificate created successfully: $2"
    fi
else
    if [ $# -gt 2 ]
    then
        echo "Too many arguments"
        echo "Syntax: $0 <input.p12> <output.pem>"
    else
        echo "Missing arguments"
        echo "Syntax: $0 <input.p12> <output.pem>"
    fi
fi

たとえば、名前を付けて、signpem.shユーザーのフォルダー(/Users/<username>?)に保存します。ファイルを作成した後、a chmod +x signpem.shを実行可能にして実行できます。

~/signpem myCertificate.p12 myCertificate.pem

そしてmyCertificate.pem作成されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.