APN yük verileri için barındırma sunucusunda depolanacak bir .pem dosyasını nasıl oluştururum?
APN yük verileri için barındırma sunucusunda depolanacak bir .pem dosyasını nasıl oluştururum?
Yanıtlar:
İşte yaptığım şey: Kimden: blog.boxedice.com ve "iPhone Gelişmiş Projeler" bölüm 10 by Joe Pezzillo.
Anahtarlıktaki aps_developer_identity.cer ile:
apns-dev-cert.p12
Bunu erişebileceğiniz bir yerde dosya olarak kaydedin . Şifre girmeye gerek yoktur.Sonraki komut, sertifikayı Mac'in PEM Terminali biçiminde oluşturur (Gizliliği Artırılmış Posta Güvenliği Sertifikası):
openssl pkcs12 -in apns-dev-cert.p12 -out apns-dev-cert.pem -nodes -clcerts
Sunucuda bu şifrelenmemiş anahtarın dosya iznini chmod 400 kullanarak ayarlayın.
Geliştirme aşaması:
Adım 1: Sertifika .p12'den Sertifika .pem oluşturun
openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12
Adım 2: Anahtar .p12'den Anahtar .pem oluşturun
openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12
3. Adım (İsteğe bağlı): İkinci adımda sorulan parolayı kaldırmak istiyorsanız
openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem
Adım 4: Şimdi Uygulamanın Geliştirme Aşamasında Push Bildirimleri için gerekli Geliştirme .pem'i almak için Anahtar .pem ve Sertifika .pem'i birleştirmeliyiz.
3. adım gerçekleştirildiyse, çalıştırın:
cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem
3 adım ise değil gerçekleştirilen, çalıştırın:
cat apns-dev-cert.pem apns-dev-key.pem > apns-dev.pem
5. Adım: Sertifikanın geçerliliğini ve APNS ile bağlantısını kontrol edin
3. adım gerçekleştirildiyse, çalıştırın:
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key-noenc.pem
3 adım ise değil gerçekleştirilen, çalıştırın:
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key.pem
Üretim Aşaması:
Adım 1: Sertifika .p12'den Sertifika .pem oluşturun
openssl pkcs12 -clcerts -nokeys -out apns-pro-cert.pem -in apns-pro-cert.p12
Adım 2: Anahtar .p12'den Anahtar .pem oluşturun
openssl pkcs12 -nocerts -out apns-pro-key.pem -in apns-pro-key.p12
3. Adım (İsteğe bağlı): İkinci adımda sorulan parolayı kaldırmak istiyorsanız
openssl rsa -in apns-pro-key.pem -out apns-pro-key-noenc.pem
Adım 4: Şimdi Uygulamanın Üretim Aşamasında Push Bildirimleri için gereken Üretim .pem'i almak için Anahtar .pem ve Sertifika .pem'i birleştirmeliyiz.
3. adım gerçekleştirildiyse, çalıştırın:
cat apns-pro-cert.pem apns-pro-key-noenc.pem > apns-pro.pem
3 adım ise değil gerçekleştirilen, çalıştırın:
cat apns-pro-cert.pem apns-pro-key.pem > apns-pro.pem
5. Adım: Sertifikanın geçerliliğini ve APNS ile bağlantısını kontrol edin.
3. adım gerçekleştirildiyse, çalıştırın:
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key-noenc.pem
3 adım ise değil gerçekleştirilen, çalıştırın:
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key.pem
Adımlar:
Bu size üç dosya verir:
PushChatKey.p12
)aps_development.cer
Dosyaları indirdiğiniz klasöre gidin, benim durumumda Masaüstü:
$ cd ~/Desktop/
.Cer dosyasını bir .pem dosyasına dönüştürün:
$ openssl x509 -in aps_development.cer -inform der -out PushChatCert.pem
Özel anahtarın .p12 dosyasını bir .pem dosyasına dönüştürün:
$ openssl pkcs12 -nocerts -out PushChatKey.pem -in PushChatKey.p12
Alma Şifresini Girin:
MAC verified OK
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
İlk önce .p12 dosyasının parolasını girmeniz gerekir, böylece openssl onu okuyabilir. Daha sonra PEM dosyasını şifrelemek için kullanılacak yeni bir parola girmeniz gerekir. Yine bu öğretici için PEM parolası olarak “pushchat” kullandım. Daha güvenli bir şey seçmelisiniz. Not: PEM parolası girmezseniz, openssl bir hata mesajı vermez, ancak oluşturulan .pem dosyasında özel anahtar bulunmaz.
Son olarak, sertifikayı ve anahtarı tek bir .pem dosyasında birleştirin:
$ cat PushChatCert.pem PushChatKey.pem > ck.pem
Terminal uygulamasını başlatın ve komut isteminden sonra aşağıdaki komutu girin
openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes
- >> Apple'ın kendi öğreticisi << - Karşılaştığım tek çalışan talimatlar kümesi. Bu düz ileri ve zekice hem linux php sunucusu hem de windows php sunucusu üzerinde çalıştığını onaylayabilirsiniz.
5 adımlı pem oluşturma işlemlerini sayfanın hemen altında bulabilirsiniz.
Burada bir göz atabilirsiniz. Sertifika oluşturmadan uygulama anahtarına hazırlık profiline ve sonunda pem'e kadar resimlerle açıklanan ayrıntılı işlem var. http://docs.moengage.com/docs/apns-certificate-pem-file
NOT: Bu görevlerden herhangi birini gerçekleştirmek için App Store Connect'te Ekip Temsilcisi veya Yönetici rolüne sahip olmanız gerekir. App Store Connect'teki bir Ekibin parçası değilseniz bu muhtemelen sizi etkilemez.
Bir iOS uygulamasına push bildirimleri göndermek için şifreleme anahtarları oluşturulmalıdır. Geçmişte bu, SSL anahtarları ve sertifikaları kullanan hantal bir süreçti. Her SSL sertifikası tek bir iOS uygulamasına özgüdür. 2016'da Apple, daha güvenilir ve kullanımı daha kolay olan yeni bir kimlik doğrulama anahtarı mekanizması tanıttı. Yeni kimlik doğrulama anahtarları daha esnektir, bakımı kolaydır ve iOS uygulamasından daha fazlasına uygulanır.
Kimlik doğrulama anahtarlarının piyasaya sürülmesinden bu yana yıllar geçmesine rağmen, her hizmet bunları desteklemez. FireBase ve Amazon Pinpoint kimlik doğrulama anahtarlarını destekler. Amazon SNS, Urban Airship, Twilio ve LeanPlum bunu yapmaz. Birçok açık kaynaklı yazılım paketi henüz kimlik doğrulama anahtarlarını desteklememektedir.
Gerekli SSL sertifikasını oluşturmak ve bunu ortak ve özel anahtarlar içeren PEM dosyası olarak dışa aktarmak için:
Apple Developer Center web sitesinde uygulama için zaten SSL sertifikası ayarladıysanız Sertifikayı PEM biçimine dönüştür seçeneğine atlayabilirsiniz. Apple'a yüklenen imzalama isteğini oluşturan Mac'te oluşturulan özel anahtara da sahip değilseniz sorun yaşayacağınızı unutmayın .
Özel anahtarın izini kaybetmekten nasıl kaçınacağınızı görmek için okumaya devam edin.
Xcode, push bildirimleri için sertifikaları veya anahtarları kontrol etmez. Anahtarlar oluşturmak ve bir uygulama için push bildirimlerini etkinleştirmek için Apple Developer Center web sitesine gitmelisiniz. Hesabınızın Sertifikalar, Tanımlayıcılar ve Profiller bölümü Uygulama Kimlikleri ve sertifikalarını kontrol eder.
Sertifikalara ve profillere erişmek için ücretli bir Apple Developer Program üyeliğine sahip olmanız veya bunu yapan bir Ekibin parçası olmanız gerekir.
Anında iletme bildirimleri kullanan uygulamalar joker karakter Uygulama Kimlikleri veya ön hazırlık profilleri kullanamaz. Her uygulama, push bildirimlerini etkinleştirmek için Apple Developer Center portalında bir Uygulama Kimliği kaydı ayarlamanızı gerektirir.
Anlık bildirimler için SSL sertifikaları oluşturmak çeşitli görevler sürecidir. Her görevin birkaç adımı vardır. Bunların hepsi anahtarları P12 veya PEM formatında dışa aktarmak için gereklidir. Devam etmeden önce adımları gözden geçirin.
Sertifika oluşturmak için Mac'te bir Sertifika İmzalama İsteği (CSR) yapmanız ve Apple'a yüklemeniz gerekir.
Daha sonra bu sertifikayı pkcs12 (aka p12) dosyası olarak dışa aktarmanız gerekirse, aynı Mac'in anahtar zincirini kullanmanız gerekir . İmzalama isteği oluşturulduğunda Anahtarlık Erişimi, varsayılan anahtarlıkta bir dizi anahtar oluşturur. Bu anahtarlar, Apple'ın imzalama isteğinden oluşturacağı sertifika ile çalışmak için gereklidir.
Özellikle geliştirme için kullanılan kimlik bilgileri için ayrı bir anahtarlığa sahip olmak iyi bir uygulamadır. Bunu yaparsanız, Sertifika Yardımcısı'nı kullanmadan önce bu anahtarlığın varsayılan olarak ayarlandığından emin olun.
Sertifika İmzalama İsteği oluşturulurken Sertifika Yardımcısı varsayılan anahtar zincirinde iki şifreleme anahtarı oluşturur. Geliştirme anahtar zincirini varsayılan yapmak önemlidir, böylece anahtarlar doğru anahtarlıkta bulunur.
İmzalama isteği oluşturmak bir çift anahtar üretti. İmzalama isteği yüklenmeden önce geliştirme anahtar zincirinin anahtarlara sahip olduğunu doğrulayın. Adları , imzalama isteğinde kullanılan Ortak Ad ile aynı olacaktır .
Sertifika İmzalama İsteği oluşturulduktan sonra Apple Geliştirici Merkezi'ne yükleyin. Apple, imzalama isteğinden push bildirim sertifikası oluşturacaktır.
Geliştirme anahtarlığınız artık Anahtar Erişimi'nde Sertifikalarım altında özel bir anahtarla push sertifikasını göstermelidir :
Bu noktada geliştirme anahtarlığı yedeklenmelidir. Birçok ekip push sertifikalarını güvenli USB sürücülerinde tutar, dahili sürüm kontrolünü taahhüt eder veya Time Machine gibi bir yedekleme çözümü kullanır. Geliştirme anahtar zinciri, herhangi bir kişisel kod imzalama bilgisi içermediğinden farklı ekip üyeleri arasında paylaşılabilir.
Anahtarlık dosyaları bulunur
~/Library/Keychains
.
Bazı üçüncü taraf push hizmetleri, Gizlilik Gelişmiş Posta (PEM) biçiminde sertifikalar gerektirirken, diğerleri Genel Anahtar Şifreleme Standartları # 12 (PKCS12 veya P12) gerektirir. Apple'dan indirilen sertifika, bu formatlardaki sertifikaları dışa aktarmak için kullanılabilir - ancak yalnızca özel anahtarı sakladıysanız.
Çok daha basit bir çözüm öneririm. Sadece Certifire kullanın .
Certifire , birkaç saniyede sadece bir tıklama ile Apple Push Bildirim Sertifikaları üreten bir macOS uygulamasıdır.
İşte adımlar:
1. Uygulamayı indirin.
2. Apple Geliştirici Hesabı kimlik bilgilerinizi kullanarak giriş yapın.
3. Uygulama Kimliğini seçin
4. "Oluştur" düğmesini tıklayın
5. İşlemi tamamladınız!
APN sertifikalarını .pem biçiminde ve .p12 biçiminde alırsınız. Dahası, .pem ve .p12'yi de birleştireceksiniz (key + cert)!
Çok daha fazlası, tüm bu sertifikaların parola olmayan sürümlerini de alacaksınız!
OpenSSL'yi yükledikten sonra Windows 7'de böyle yaptım (bağlantı Win32 yükleyicisine gider, hafif sürümü değil, en son sürümü seçin).
Bu yöntemle yalnızca .cer
Apple'dan indirilen dosyaya ihtiyacınız vardır .
c:\OpenSSL-Win32\bin\openssl.exe x509 -in aps_development.cer -inform DER -out developer_identity.pem -outform PEM
bu, daha sonra özel anahtarınızı da eklemeniz gereken bir dosya oluşturur.
----- ÖZEL ANAHTAR
BAŞLAT ----- MIIEuwIBADANBgkqhk .... vb
MIIEuwIBADANBgkqhk .... vb
MIIEuwIBADANBgkqhk .... vb
MIIEuwIBADANBgkqhk .... vb
----- ÖZEL ANAHTAR -----
-----
BELGEYİ BAŞLAT ----- AwIBAgwIBADAwIBADA .... vb
AwIBAgwIBADAwIBADA .... vb
AwIBAgwIBADAwIBADA .... vb
----- SON SERTİFİKA -----
Bu kadar.
Anahtarlık erişiminizde zaten apns p12 dosyanız varsa, .Pem dosyası oluşturmanın en kolay yolu vardır.
Terminali açın ve aşağıdaki komutu girin:
Devlopment için openssl pkcs12 -in APN-div-cert.p12 -kasa APN-div-cert.pem -nodes -clcerts
Üretim için openssl pkcs12 -in apns-dist-cert.p12 -out apns-dist-cert.pem -nodes -clcerts
P12 dosyanızı şu adla yeniden adlandırın: apns-div-cert.p12 aksi halde bunun yerine dosya adınızı girmeniz gerekir. Teşekkürler!!
openssl
Bir .pem
dosya oluşturmak için gereken komutu asla hatırlamıyorum , bu yüzden süreci basitleştirmek için bu bash betiğini yaptım:
#!/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
Örneğin, adlandırın signpem.sh
ve kullanıcı klasörünüze ( /Users/<username>
?) Kaydedin . Dosyayı oluşturduktan sonra, chmod +x signpem.sh
yürütülebilir dosyayı yapmak için a yapın ve şunları çalıştırabilirsiniz:
~/signpem myCertificate.p12 myCertificate.pem
Ve myCertificate.pem
yaratılacak.