web-dev-qa-db-ja.com

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

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

170
Biranchi

From: blog.boxedice.com とJoe Pezzilloによる「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形式(プライバシー強化メールセキュリティ証明書)のMacのターミナルで証明書を生成します。

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

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

344
zaph

開発フェーズ:

ステップ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をマージする必要があります
コマンド:cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem (If 3rd step is performed )

コマンド:cat apns-dev-cert.pem apns-dev-key.pem > apns-dev.pem (if not)

ステップ5:証明書の有効性とAPNSへの接続を確認します
コマンド:openssl s_client -connect gateway.sandbox.Push.Apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key.pem (If 3rd step is not performed )
コマンド:openssl s_client -connect gateway.sandbox.Push.Apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key-noenc.pem (If performed )

生産段階:

ステップ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を取得する必要があります
コマンド:cat apns-pro-cert.pem apns-pro-key-noenc.pem > apns-pro.pem (If 3rd step is performed )コマンド:cat apns-pro-cert.pem apns-pro-key.pem > apns-pro.pem (if not)

ステップ5:証明書の有効性とAPNSへの接続を確認します
コマンド:openssl s_client -connect gateway.Push.Apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key.pem (If 3rd step is not performed )
コマンド:openssl s_client -connect gateway.Push.Apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key-noenc.pem(実行した場合)

210
Ashish Chhabra

手順:

  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パスフレーズとして「プッシュチャット」を使用しました。より安全なものを選択する必要があります。注:PEMパスフレーズを入力しない場合、opensslはエラーメッセージを表示しませんが、生成された.pemファイルには秘密鍵が含まれません。

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

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

57
sarit bahuguna

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

  openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes
20
Durai Amuthan.H

->> Apple独自のチュートリアル <<-は、私が遭遇した唯一の作業セットです。それは簡単で、Linux phpサーバーとwindows phpサーバーの両方でうまく機能することを確認できます。

ページの一番下に、5段階のPem作成プロセスがあります。

10
capikaw

こちらをご覧ください。証明書の作成から、アプリキーからプロビジョニングプロファイル、最終的にはPEMまで、画像を使用して詳細なプロセスを説明しています。 http://docs.moengage.com/docs/apns-certificate-pem-file

4
Gautam Jain

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

手順は次のとおりです。
1。アプリをダウンロードします。
2。 Apple開発者アカウントの資格情報を使用してログインします。
3。 App-IDを選択してください
4。 「生成」ボタンをクリックします
5。できました!

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

enter image description here

enter image description here

3
arturdev

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

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

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

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

-----プライベートキーを開始-----
MIIEuwIBADANBgkqhk .... etc
MIIEuwIBADANBgkqhk .... etc
MIIEuwIBADANBgkqhk .... etc
MIIEuwIBADANBgkqhk .... etc
----- ENDプライベートキー-----
-----証明書の開始-----
AwIBAgwIBADAwIBADA .... etc
AwIBAgwIBADAwIBADA .... etc
AwIBAgwIBADAwIBADA .... etc
----- END CERTIFICATE -----

それでおしまい。

2
Rots

注:これらのタスクを実行するには、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形式に変換することができます。 Appleにアップロードされた署名要求を作成したMacで生成された秘密キーがないalsoがないと、問題が発生することに注意してください。

その秘密鍵の追跡を失わないようにする方法を確認してください。

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

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

証明書とプロファイルにアクセスするには、有料のApple Developer Programメンバーシップを持っているか、そうするチームの一員でなければなりません。

  1. Apple Developer Webサイトenter image description here
  2. Accountに移動し、次にCertificates、Identifiers&Profilesenter image description here

アプリIDを作成する

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

  1. Identifiersの下のApp IDに移動します
  2. バンドル識別子を使用してアプリを検索します。既に存在する可能性があります。
  3. アプリの既存のアプリIDがない場合は、(+)ボタンをクリックして作成します。
  4. App IDSuffixセクションでExplicit App IDを選択します。 enter image description here
  5. アプリのバンドル識別子を入力します。
  6. 一番下までスクロールして、プッシュ通知を有効にしますenter image description here
  7. Continueをクリックします。
  8. 次の画面でRegisterをクリックして、アプリIDの作成を完了します。 enter image description here

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

  1. Identifiersの下のApp IDに移動します
  2. アプリIDをクリックして詳細を表示し、一番下までスクロールします。 enter image description here
  3. Editenter image description here
  4. アプリID設定画面でプッシュ通知enter image description here
  5. プッシュ通知を有効にするには、チェックボックスを選択します。 enter image description here

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

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

  1. [開発SSL証明書]で[証明書の作成]をクリックします。本番環境でも同様にこれを行う必要があります。
  2. Appleは、証明書署名要求の作成を求めます enter image description here

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

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

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

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

  1. Macでキーチェーンアクセスを開く
  2. FileメニューでNew Keychain ...を選択します
  3. キーチェーンに「Shared Development」やアプリケーションの名前などのわかりやすい名前を付けます

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

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

  1. Macでキーチェーンアクセスを開きます。
  2. キーチェーンのリストで開発キーチェーンをコントロールクリックします
  3. 選択キーチェーンを「共有開発」にするデフォルトenter image description here
  4. Keychain AccessメニューからCertificate Assistantを選択し、次に認証局に証明書を要求...サブメニューから。 enter image description here
  5. 証明書アシスタントが表示されたら、ディスクに保存をチェックします。 enter image description here
  6. ユーザーのメールアドレスフィールドに、Appleデベロッパープログラムのメンバーシップに関連付けられたメールアドレスを入力します。
  7. Common Nameフィールドにキーの名前を入力します。共通名の一部としてアプリのバンドルIDを使用することをお勧めします。これにより、どの証明書とキーがどのアプリに属しているかを簡単に確認できます。
  8. 続行をクリックします。証明書アシスタントは、署名要求をファイルに保存するよう要求します。
  9. キーチェーンアクセスで、「ログイン」キーチェーンを再びデフォルトにします。

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

enter image description here

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

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

  1. 証明書署名リクエストをアップロードする
  2. 証明書署名要求から作成された証明書Appleをダウンロードします enter image description here
  3. キーチェーンアクセスで、キーチェーンのリストから開発キーチェーンを選択します
  4. FileメニューからImport Items ...enter image description here
  5. Appleからダウンロードした証明書ファイルをインポートします

開発キーチェーンには、キーチェーンアクセスのMy Certificatesの下にプライベートキーを持つプッシュ証明書が表示されます。

enter image description here

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

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

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

証明書をPEM形式に変換します

  1. キーチェーンアクセスで、以前に作成した開発キーチェーンを選択します。
  2. マイ証明書でプッシュ証明書を選択します。秘密鍵が必要です。 ![CERプッシュ証明書をダウンロード](keychain/import complete.png)
  3. FileメニューからExport Items ...enter image description here
  4. 開いた保存パネルで、ファイル形式としてPrivacy Enhanced Mail(.pem)を選択します。
  5. ファイルを保存する
2
quellish

.pemファイルを作成するのに必要なopensslコマンドを覚えていないので、プロセスを簡素化するためにこの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>?)。ファイルを作成した後、chmod +x signpem.shを実行して実行可能にし、次を実行できます。

~/signpem myCertificate.p12 myCertificate.pem

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

1
Alejandro Iván

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

ターミナルを開き、次のコマンドを入力します。

開発用 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
Yash