APNペイロードデータ用にホスティングサーバーに保存される.pemファイルを作成するにはどうすればよいですか?
APNペイロードデータ用にホスティングサーバーに保存される.pemファイルを作成するにはどうすればよいですか?
回答:
これが私がやったことです、From:blog.boxedice.comとによる「iPhone Advanced Projects」の第10章です。
キーチェーンにaps_developer_identity.cerを使用:
apns-dev-cert.p12
アクセスできる場所にこれをファイルとして保存します。パスワードを入力する必要はありません。次のコマンドは、PEM形式(Privacy Enhanced Mail Security Certificate)のMacのターミナルで証明書を生成します。
openssl pkcs12 -in apns-dev-cert.p12 -out apns-dev-cert.pem -nodes -clcerts
サーバーで、chmod 400を使用して、この暗号化されていないキーのファイル権限を設定します。
開発フェーズ:
手順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
手順:
これにより、3つのファイルが得られます。
PushChatKey.p12
)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
ターミナルアプリケーションを起動し、プロンプトの後に次のコマンドを入力します
openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes
->> Apple自身のチュートリアル <<-は、私が遭遇した唯一の作業セットです。それは単純明快で、Linux phpサーバーとWindows phpサーバーの両方で見事に機能することを確認できます。
5ステップのペム作成プロセスは、ページの下部にあります。
こちらをご覧ください。証明書の作成からアプリのキー、プロビジョニングプロファイル、そして最終的にはペムに至るまで、画像を使用して詳細なプロセスを説明しています。 http://docs.moengage.com/docs/apns-certificate-pem-file
注:これらのタスクを実行するには、App Store Connectにチームエージェントまたは管理者の役割が必要です。App Store Connectのチームの一員でない場合は、おそらく影響はありません。
iOSアプリケーションにプッシュ通知を送信するには、暗号化キーを作成する必要があります。これまでは、SSLキーと証明書を使用する煩雑なプロセスでした。各SSL証明書は、単一のiOSアプリケーションに固有のものでした。2016年にAppleは、より信頼性が高く使いやすい新しい認証キーメカニズムを導入しました。新しい認証キーは、iOSアプリよりも柔軟でメンテナンスが簡単で、より多くのアプリケーションに適用できます。
認証キーが導入されてから何年も経っていますが、すべてのサービスがそれらをサポートしているわけではありません。FireBaseとAmazon Pinpointは認証キーをサポートしています。Amazon SNS、Urban Airship、Twilio、およびLeanPlumにはありません。多くのオープンソースソフトウェアパッケージは、認証キーをまだサポートしていません。
必要なSSL証明書を作成し、公開鍵と秘密鍵を含むPEMファイルとしてエクスポートするには:
Apple Developer Center WebサイトでアプリのSSL証明書をすでに設定している場合は、スキップして証明書をPEM形式に変換することができます。そうでない場合は、あなたが問題に実行されることに注意してくださいまた、アップルにアップロードされた署名要求を作成したMac上で生成された秘密鍵を持っています。
その秘密鍵の追跡を失わないようにする方法を確認するために読んでください。
Xcodeは、プッシュ通知の証明書またはキーを制御しません。アプリのキーを作成してプッシュ通知を有効にするには、Apple Developer Center Webサイトにアクセスする必要があります。アカウントの証明書、識別子、プロファイルセクションは、アプリIDと証明書を制御します。
証明書とプロファイルにアクセスするには、有償のApple Developer Programメンバーシップを持っているか、そうしたチームのメンバーである必要があります。
プッシュ通知を使用するアプリは、ワイルドカードアプリIDまたはプロビジョニングプロファイルを使用できません。各アプリでは、プッシュ通知を有効にするためにApple Developer CenterポータルでアプリIDレコードを設定する必要があります。
プッシュ通知用のSSL証明書の作成は、いくつかのタスクのプロセスです。各タスクにはいくつかのステップがあります。これらのすべては、P12またはPEM形式でキーをエクスポートするために必要です。続行する前に手順を確認してください。
証明書を作成するには、Macで証明書署名要求(CSR)を作成し、それをAppleにアップロードする必要があります。
後でこの証明書をpkcs12(別名p12)ファイルとしてエクスポートする必要がある場合は、同じMacのキーチェーンを使用する必要があります。署名リクエストが作成されると、Keychain Accessはデフォルトのキーチェーンに一連のキーを生成します。これらのキーは、Appleが署名リクエストから作成する証明書を操作するために必要です。
開発に使用される資格情報専用の別のキーチェーンを用意することをお勧めします。これを行う場合は、証明書アシスタントを使用する前に、このキーチェーンがデフォルトに設定されていることを確認してください。
証明書署名要求を作成すると、証明書アシスタントはデフォルトのキーチェーンに2つの暗号化キーを生成します。キーが正しいキーチェーンにあるように、開発キーチェーンをデフォルトにすることが重要です。
署名リクエストを作成すると、キーのペアが生成されました。署名リクエストがアップロードされる前に、開発キーチェーンにキーがあることを確認してください。それらの名前は、署名リクエストで使用される共通名と同じになります。
証明書署名要求が作成されたら、それをApple Developer Centerにアップロードします。Appleは署名リクエストからプッシュ通知証明書を作成します。
これで、開発キーチェーンのキーチェーンアクセスの[My Certificates]の下に、秘密鍵を含むプッシュ証明書が表示されます。
この時点で、開発キーチェーンをバックアップする必要があります。多くのチームは、安全なUSBドライブにプッシュ証明書を保持し、内部バージョン管理に取り組み、Time Machineのようなバックアップソリューションを使用しています。開発キーチェーンには個人のコード署名資格情報が含まれていないため、異なるチームメンバー間で共有できます。
キーチェーンファイルはにあり
~/Library/Keychains
ます。
サードパーティのプッシュサービスには、Privacy Enhanced Mail(PEM)形式の証明書を必要とするものと、公開鍵暗号化標準#12(PKCS12またはP12)を必要とするものがあります。Appleからダウンロードした証明書を使用して、これらの形式で証明書をエクスポートできます。ただし、秘密鍵を保持している場合のみです。
私はもっと簡単な解決策を提案します。Certifireを使用してください。
Certifireは、数秒でワンクリックでAppleプッシュ通知証明書を生成するmacOSアプリケーションです。
手順は次のとおり
です。1.アプリをダウンロードします。
2. Apple Developer Accountの認証情報を使用してログインします。
3.アプリIDを選択します
4. [生成]ボタンをクリックします
5.完了です!
APN証明書は.pem形式と.p12形式で取得されます。さらに、.pemと.p12も結合されます(key + cert)。
さらに、これらすべての証明書のパスフレーズなしのバージョンも取得できます。
これは、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 -----
それでおしまい。
キーチェーンアクセスにすでに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に変更します。それ以外の場合は、ファイル名を入力する必要があります。ありがとう!!
ファイルの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
作成されます。