Membuat file .pem untuk APNS?


177

Bagaimana cara membuat file .pem untuk disimpan di server hosting untuk data payload APN?


1
Bisakah saya menggunakan .p12 untuk apns dan bukan .pem?
Gajendra K Chauhan

Definisi FYI .pem: serverfault.com/a/21158/193377 PEM sendiri bukan sertifikat, itu hanya cara penyandian data. .... aman untuk ditempel ke badan pesan email karena memiliki garis jangkar dan bersih 7-bit.
AnneTheAgile

Jawaban:


365

Inilah yang saya lakukan, Dari: blog.boxedice.com dan "iPhone Advanced Projects" bab 10 oleh Joe Pezzillo.

Dengan aps_developer_identity.cer di gantungan kunci:

  1. Luncurkan Akses Rantai Kunci dari Mac lokal Anda dan dari rantai masuk, filter berdasarkan kategori Sertifikat. Anda akan melihat opsi yang dapat diperluas yang disebut "Layanan Pengembangan Apple"
  2. Klik kanan pada “Layanan Push Pengembangan Apple”> Ekspor “Layanan Push Pengembangan Apple ID123 ″. Simpan ini sebagai apns-dev-cert.p12file di suatu tempat Anda dapat mengaksesnya. Tidak perlu memasukkan kata sandi.
  3. Perintah selanjutnya menghasilkan sertifikat dalam Terminal Mac untuk format PEM (Sertifikat Keamanan Email Ditingkatkan Privasi):

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

Di server atur izin file dari kunci tidak terenkripsi ini dengan menggunakan chmod 400.


3
Saya telah mengikuti langkah-langkah di atas dan sekarang berfungsi. Saya telah menyimpan sertifikat dan skrip php di server web lokal saya (Xampp). Saya bisa mendapatkan token perangkat, dan saya menggunakannya dalam skrip php. Script php dapat menghubungkan dan mengirim data payload. Tapi tetap saja saya tidak bisa mendapatkan PUSH Notification. Apa masalahnya ? Apakah pemberitahuan memerlukan waktu untuk dijangkau ???
Biranchi

12
Di Akses Keychain Mavericks (10.9's), ada opsi untuk mengekspor sebagai .pem! Cukup klik kanan pada "Apple Development / Production iOS Push Services Certificate di dalam Keychain Access dan pilih untuk Mengekspornya. Ubah format file menjadi .pem - selesai! Juga tersedia sebagai opsi ekspor: .p7b & .p12
tylerl

5
.pem dinonaktifkan untuk saya, yosemite beta7. Saya punya beberapa masalah membuat .pem, ketika saya membukanya dikatakan untuk distribusi bukan dev
Cristi Băluță

2
.pem tidak dinonaktifkan untuk saya, tetapi saya tidak dapat menyimpan sebagai p12. Begini
FooBar

2
Untuk macOS 10.14 Mojave menggunakan aplikasi Keychain Access, Anda dapat memilih Ekspor "Apple Push Services: com.yourBundleIdentifier sertifikat" ke Format File "Privacy Enhanced Mail (.pem)" dan simpan kapan pun Anda mau.
5uper_0leh

226

Fase Pengembangan:

Langkah 1: Buat Certificate .pem dari Certificate .p12
openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12

Langkah 2: Buat Kunci .pem dari Kunci .p12
openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12

Langkah 3 (Opsional): Jika Anda ingin menghapus frasa sandi yang diminta pada langkah kedua
openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem

Langkah 4: Sekarang kita harus menggabungkan kunci .pem dan Sertifikat .pem untuk mendapatkan Pengembangan .pem yang dibutuhkan untuk Pemberitahuan Dorong dalam Tahap Pengembangan Aplikasi.

Jika langkah ketiga dilakukan, jalankan:
cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem

Jika langkah ke-3 adalah tidak dilakukan, jalankan:
cat apns-dev-cert.pem apns-dev-key.pem > apns-dev.pem

Langkah 5: Periksa validitas sertifikat dan konektivitas ke APNS

Jika langkah ketiga dilakukan, jalankan:
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key-noenc.pem

Jika langkah ke-3 tidak dilakukan, jalankan:
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key.pem

Fase produksi:

Langkah 1: Buat Certificate .pem dari Certificate .p12
openssl pkcs12 -clcerts -nokeys -out apns-pro-cert.pem -in apns-pro-cert.p12

Langkah 2: Buat Kunci .pem dari Kunci .p12
openssl pkcs12 -nocerts -out apns-pro-key.pem -in apns-pro-key.p12

Langkah 3 (Opsional): Jika Anda ingin menghapus frasa sandi yang diminta pada langkah kedua
openssl rsa -in apns-pro-key.pem -out apns-pro-key-noenc.pem

Langkah 4: Sekarang kita harus menggabungkan .pem Kunci dan Sertifikat .pem untuk mendapatkan Produksi .pem yang diperlukan untuk Pemberitahuan Push di Fase Produksi App.

Jika langkah ketiga dilakukan, jalankan:
cat apns-pro-cert.pem apns-pro-key-noenc.pem > apns-pro.pem

Jika langkah ke-3 tidak dilakukan, jalankan:
cat apns-pro-cert.pem apns-pro-key.pem > apns-pro.pem

Langkah 5: Periksa validitas sertifikat dan konektivitas ke APNS.

Jika langkah ketiga dilakukan, jalankan:
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key-noenc.pem

Jika langkah ke-3 tidak dilakukan, jalankan:
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key.pem


5
Terima kasih, ini satu-satunya yang bekerja untuk saya.
Erik Villegas

6
Disimpan ini di brankas saya yang berharga! : P Jawaban terbaik yang pernah ada !!
Menghitam

3
Anda adalah dewa ini bekerja terima kasih. UP VOTE. Ini harus menjadi jawaban karena ini menjelaskan secara mendalam bagaimana cara membuatnya langkah demi langkah
MNM

2
Tentu ini harus menjadi jawaban yang diterima karena jawaban @Rahul Sharma tidak menghasilkan hasil yang diharapkan, sementara jawaban ini sempurna.
Sekarang

Terima kasih Anda telah menghemat waktu saya untuk memeriksa validitas sertifikat. Ini harus menjadi jawaban yang diterima @Biranchi
Sourabh Sharma

59

Langkah:

  1. Buat CSR Menggunakan Akses Gantungan Kunci
  2. Buat P12 Menggunakan Akses Rantai Kunci menggunakan kunci pribadi
  3. ID dan sertifikat Aplikasi APNS

Ini memberi Anda tiga file:

  • CSR
  • Kunci pribadi sebagai file p12 ( PushChatKey.p12)
  • Sertifikat SSL, aps_development.cer

Buka folder tempat Anda mengunduh file, dalam kasus saya Desktop:

$ cd ~/Desktop/

Ubah file .cer menjadi file .pem:

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

Ubah file .p12 kunci pribadi menjadi file .pem:

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

Masukkan Kata Sandi Impor:

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

Pertama-tama Anda harus memasukkan frasa sandi untuk file .p12 agar openssl dapat membacanya. Maka Anda perlu memasukkan frasa sandi baru yang akan digunakan untuk mengenkripsi file PEM. Sekali lagi untuk tutorial ini saya menggunakan "pushchat" sebagai frasa sandi PEM. Anda harus memilih sesuatu yang lebih aman. Catatan: jika Anda tidak memasukkan frasa sandi PEM, openssl tidak akan memberikan pesan kesalahan tetapi file .pem yang dihasilkan tidak akan memiliki kunci pribadi di dalamnya.

Terakhir, gabungkan sertifikat dan kunci ke dalam satu file .pem:

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


22

Buka aplikasi Terminal dan masukkan perintah berikut setelah prompt

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

1
Setelah Anda menghasilkan p12, ini harus menjadi jawabannya.
Stone

10

- >> Tutorial Apple sendiri << - adalah satu-satunya rangkaian instruksi yang pernah saya jumpai. Ini lurus ke depan dan saya dapat mengkonfirmasi itu berfungsi baik pada server php linux dan server windows php.

Anda dapat menemukan proses pembuatan 5-langkah mereka tepat di bagian bawah halaman.


Iya! Cukup ikuti tutorial sederhana ini. Hanya satu perintah openssl sederhana. Saya tidak tahu apakah itu penting, tapi saya menjalankan perintah dengan SSH'ing ke server yang terhubung ke APNS.
tylerl

1
@tylerl, PEM dapat dihasilkan dari mesin apa pun - tidak harus server tempat ia berada.
capikaw

Apakah saya perlu menjalankan proses ini di server itu sendiri di mana kode php digunakan? atau bisakah saya menggunakan file .pem yang dihasilkan dari mac saya?
Jatin

4
Tautan rusak pada September 2015
Nicolas Miari



4

CATATAN: Anda harus memiliki peran Agen Tim atau Admin di App Store Connect untuk melakukan tugas-tugas ini. Jika Anda bukan bagian dari Tim di App Store Connect, ini mungkin tidak memengaruhi Anda.

Mengirim pemberitahuan push ke aplikasi iOS memerlukan pembuatan kunci penyandian. Di masa lalu ini adalah proses rumit yang menggunakan kunci dan sertifikat SSL. Setiap sertifikat SSL khusus untuk satu aplikasi iOS. Pada 2016 Apple memperkenalkan mekanisme kunci otentikasi baru yang lebih andal dan lebih mudah digunakan. Kunci otentikasi baru lebih fleksibel, mudah dirawat dan diterapkan lebih dari pada aplikasi iOS.

Meskipun sudah bertahun-tahun sejak kunci otentikasi diperkenalkan, tidak setiap layanan mendukungnya. FireBase dan Amazon Pinpoint mendukung kunci otentikasi. Amazon SNS, Urban Airship, Twilio, dan LeanPlum tidak. Banyak paket perangkat lunak open source belum mendukung kunci otentikasi.

Untuk membuat sertifikat SSL yang diperlukan dan mengekspornya sebagai file PEM yang berisi kunci publik dan pribadi:

  1. Arahkan ke Sertifikat, Identifiers & Profil
  2. Buat atau Edit ID Aplikasi Anda.
  3. Aktifkan Pemberitahuan Push untuk ID Aplikasi
  4. Tambahkan Sertifikat SSL ke ID Aplikasi
  5. Ubah sertifikat menjadi format PEM

Jika Anda sudah mengatur sertifikat SSL untuk aplikasi di situs web Pusat Pengembang Apple, Anda dapat langsung beralih ke Konversi sertifikat ke format PEM. Perlu diingat bahwa Anda akan mengalami masalah jika Anda tidak juga memiliki kunci pribadi yang dihasilkan pada Mac yang menciptakan permintaan penandatanganan yang diupload ke Apple.

Baca terus untuk mengetahui cara menghindari kehilangan jejak kunci pribadi itu.

Arahkan ke Sertifikat, Identifiers & Profil

Xcode tidak mengontrol sertifikat atau kunci untuk pemberitahuan push. Untuk membuat kunci dan mengaktifkan pemberitahuan push untuk suatu aplikasi, Anda harus mengunjungi situs web Pusat Pengembang Apple. Bagian Sertifikat, Pengidentifikasi & Profil akun Anda mengontrol ID Aplikasi dan sertifikat.

Untuk mengakses sertifikat dan profil, Anda harus memiliki keanggotaan Program Pengembang Apple berbayar atau menjadi bagian dari Tim yang melakukannya.

  1. Masuk ke situs web Pengembang Apple masukkan deskripsi gambar di sini
  2. Buka Akun , lalu Sertifikat, Identifikasi & Profil masukkan deskripsi gambar di sini

Buat ID Aplikasi

Aplikasi yang menggunakan pemberitahuan push tidak dapat menggunakan ID aplikasi wildcard atau profil penyediaan. Setiap aplikasi mengharuskan Anda mengatur catatan ID Aplikasi di portal Pusat Pengembang Apple untuk mengaktifkan pemberitahuan push.

  1. Buka ID Aplikasi di bawah Pengidentifikasi
  2. Cari aplikasi Anda menggunakan pengidentifikasi bundel. Itu mungkin sudah ada.
  3. Jika tidak ada ID Aplikasi untuk aplikasi, klik tombol (+) untuk membuatnya.
  4. Pilih ID Aplikasi Eksplisit di bagian Sufiks ID Aplikasi . masukkan deskripsi gambar di sini
  5. Masukkan pengidentifikasi bundel untuk aplikasi.
  6. Gulir ke bawah dan aktifkan Pemberitahuan Push . masukkan deskripsi gambar di sini
  7. Klik Lanjutkan .
  8. Pada layar berikutnya klik Daftar untuk menyelesaikan pembuatan ID Aplikasi. masukkan deskripsi gambar di sini

Aktifkan Pemberitahuan Push untuk ID Aplikasi

  1. Buka ID Aplikasi di bawah Pengidentifikasi
  2. Klik pada ID Aplikasi untuk melihat detail dan gulir ke bawah. masukkan deskripsi gambar di sini
  3. Klik Edit masukkan deskripsi gambar di sini
  4. Di layar Pengaturan ID Aplikasi, gulir ke bawah ke Pemberitahuan Push masukkan deskripsi gambar di sini
  5. Pilih kotak centang untuk mengaktifkan pemberitahuan push. masukkan deskripsi gambar di sini

Membuat sertifikat SSL untuk pemberitahuan push adalah proses dari beberapa tugas. Setiap tugas memiliki beberapa langkah. Semua ini diperlukan untuk mengekspor kunci dalam format P12 atau PEM. Tinjau langkah-langkah sebelum melanjutkan.

Tambahkan Sertifikat SSL ke ID Aplikasi

  1. Di bawah Pengembangan Sertifikat SSL klik Buat Sertifikat . Anda perlu melakukan ini nanti untuk produksi juga.
  2. Apple akan meminta Anda untuk membuat Permintaan Penandatanganan Sertifikat masukkan deskripsi gambar di sini

Untuk membuat sertifikat, Anda harus membuat Permintaan Penandatanganan Sertifikat (CSR) pada Mac dan mengunggahnya ke Apple.

Kemudian jika Anda perlu mengekspor sertifikat ini sebagai file pkcs12 (alias p12), Anda harus menggunakan gantungan kunci dari Mac yang sama . Ketika permintaan penandatanganan dibuat Akses Keychain menghasilkan satu set kunci di gantungan kunci default. Kunci-kunci ini diperlukan untuk bekerja dengan sertifikat yang akan dibuat Apple dari permintaan penandatanganan.

Ini adalah praktik yang baik untuk memiliki gantungan kunci terpisah khusus untuk kredensial yang digunakan untuk pengembangan. Jika Anda melakukan ini, pastikan gantungan kunci ini disetel sebagai bawaan sebelum menggunakan Certificate Assistant.

Buat Keychain untuk Kredensial Pengembangan

  1. Buka Akses Rantai Kunci di Mac Anda
  2. Dalam menu File pilih Gantungan Kunci Baru ...
  3. Berikan gantungan kunci Anda nama deskriptif, seperti "Pengembangan Bersama" atau nama aplikasi Anda

Buat Permintaan Penandatanganan Sertifikat (CSR)

Saat membuat Permintaan Penandatanganan Sertifikat, Asisten Sertifikat menghasilkan dua kunci enkripsi di gantungan kunci default. Penting untuk menjadikan gantungan kunci pengembangan sebagai bawaan sehingga kunci-kunci tersebut ada di gantungan kunci yang benar.

  1. Buka Akses Rantai Kunci di Mac Anda.
  2. Kontrol-klik pada gantungan kunci pengembangan dalam daftar gantungan kunci
  3. Pilih Jadikan gantungan kunci "Pengembangan Bersama" Default masukkan deskripsi gambar di sini
  4. Dari menu Akses Keychain pilih Asisten Sertifikat , lalu Minta Sertifikat Dari Otoritas Sertifikat ... dari sub menu. masukkan deskripsi gambar di sini
  5. Ketika Asisten Sertifikat muncul, periksa Disimpan ke Disk . masukkan deskripsi gambar di sini
  6. Masukkan alamat email yang terkait dengan keanggotaan Program Pengembang Apple Anda di Alamat Email Pengguna bidang .
  7. Masukkan nama untuk kunci di bidang Nama Umum . Sebaiknya gunakan bundel ID aplikasi sebagai bagian dari nama umum. Ini membuatnya mudah untuk mengetahui sertifikat dan kunci apa yang dimiliki aplikasi mana.
  8. Klik lanjutkan. Certificate Assistant akan meminta untuk menyimpan permintaan penandatanganan ke file.
  9. Di Keychain Access, buat kembali "login" gantungan kunci menjadi default.

Membuat permintaan penandatanganan menghasilkan sepasang kunci. Sebelum permintaan penandatanganan diunggah, verifikasi bahwa gantungan kunci pengembangan memiliki kunci. Nama mereka akan sama dengan Nama Biasa yang digunakan dalam permintaan penandatanganan.

masukkan deskripsi gambar di sini

Unggah Permintaan Penandatanganan Sertifikat (CSR)

Setelah Permintaan Penandatanganan Sertifikat dibuat, unggah ke Pusat Pengembang Apple. Apple akan membuat sertifikat pemberitahuan push dari permintaan penandatanganan.

  1. Unggah Permintaan Penandatanganan Sertifikat
  2. Unduh sertifikat yang telah dibuat Apple dari Permintaan Penandatanganan Sertifikat masukkan deskripsi gambar di sini
  3. Di Akses Keychain pilih gantungan kunci pengembangan dari daftar gantungan kunci
  4. Dari menu File pilih Impor Item ... masukkan deskripsi gambar di sini
  5. Impor file sertifikat yang diunduh dari Apple

Keychain pengembangan Anda sekarang harus memperlihatkan sertifikat push dengan kunci pribadi di bawah Sertifikat Saya di Akses Keychain:

masukkan deskripsi gambar di sini

Pada titik ini gantungan kunci pengembangan harus didukung. Banyak tim menyimpan sertifikat push mereka pada drive USB yang aman, berkomitmen untuk kontrol versi internal atau menggunakan solusi cadangan seperti Time Machine. Gantungan kunci pengembangan dapat dibagikan di antara anggota tim yang berbeda karena tidak berisi kredensial penandatanganan kode pribadi.

File gantungan kunci terletak di ~/Library/Keychains.

Beberapa layanan push pihak ketiga memerlukan sertifikat dalam format Privacy Enhanced Mail (PEM), sementara yang lain memerlukan Public-Key Cryptography Standards # 12 (PKCS12 atau P12). Sertifikat yang diunduh dari Apple dapat digunakan untuk mengekspor sertifikat dalam format ini - tetapi hanya jika Anda telah menyimpan kunci privat.

Ubah sertifikat menjadi format PEM

  1. Di Akses Keychain pilih gantungan kunci pengembangan yang dibuat sebelumnya.
  2. Pilih sertifikat push di Sertifikat Saya . Seharusnya ada kunci pribadi dengannya. ! [Unduh sertifikat push CER] (gantungan kunci / impor complete.png)
  3. Dari menu File pilih Ekspor Item ... masukkan deskripsi gambar di sini
  4. Di panel simpan yang terbuka, pilih Privacy Enhanced Mail (.pem) sebagai format file.
  5. Simpan file

3

Saya akan menyarankan solusi yang jauh lebih sederhana. Cukup gunakan Sertifikat .
Certifire adalah aplikasi macOS yang menghasilkan Sertifikat Pemberitahuan Push Apple hanya dengan satu klik dalam beberapa detik.

Berikut langkah-langkahnya:
1. Unduh aplikasi.
2. Masuk menggunakan kredensial Akun Pengembang Apple Anda.
3. Pilih App-ID
4. Klik tombol "Hasilkan"
5. Anda selesai!

Anda akan mendapatkan sertifikat APN dalam format .pem dan juga dalam format .p12. Terlebih lagi, Anda juga akan mendapatkan kombinasi .pem dan .p12 (kunci + cert)!
Lebih dari itu, Anda juga akan mendapatkan versi tanpa frasa sandi dari semua sertifikat ini!

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini


2

Ini adalah bagaimana saya melakukannya pada Windows 7, setelah menginstal OpenSSL (tautan menuju ke installer Win32, pilih versi terbaru dan bukan versi ringan).

Dengan metode ini, Anda hanya perlu .cermengunduh file dari Apple.

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

ini akan membuat file yang kemudian Anda perlu menambahkan kunci pribadi Anda.

----- BEGIN PRIVATE KUNCI -----
MIIEuwIBADANBgkqhk .... dll
MIIEuwIBADANBgkqhk .... dll
MIIEuwIBADANBgkqhk .... dll
MIIEuwIBADANBgkqhk .... dll
----- AKHIR KUNCI PRIVATE -----
----- BEGIN CERTIFICATE -----
AwIBAgwIBADAwIBADA .... dll
AwIBAgwIBADAwIBADA .... dll
AwIBAgwIBADAwIBADA .... dll
----- END CERTIFICATE -----

Itu dia.


2

Ada cara termudah untuk membuat file .Pem jika Anda sudah membuka file p12 di akses gantungan kunci Anda.

Buka terminal dan masukkan perintah di bawah ini:

Untuk Devlopment openssl pkcs12 -dalam apns-div-cert.p12 -keluar apns-div-cert.pem -nodes -clcerts

Untuk Produksi openssl pkcs12 -dalam apns-dist-cert.p12 -keluar apns-dist-cert.pem -nodes -clcerts

Ganti nama file P12 Anda dengan nama ini: apns-div-cert.p12 jika tidak, Anda harus memasukkan nama file Anda. Terima kasih!!


1

Saya tidak pernah ingat opensslperintah yang diperlukan untuk membuat .pemfile, jadi saya membuat skrip bash ini untuk menyederhanakan proses:

#!/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

Beri nama, misalnya, signpem.shdan simpan di folder pengguna Anda ( /Users/<username>?). Setelah membuat file, lakukan chmod +x signpem.shuntuk membuatnya dapat dieksekusi dan kemudian Anda dapat menjalankan:

~/signpem myCertificate.p12 myCertificate.pem

Dan myCertificate.pemakan dibuat.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.