Tworzenie.plik pem dla APNS?

Jak utworzyć .plik pem, który ma być przechowywany na serwerze hostingowym dla Danych APN payload?

Author: Mike Chamberlain, 2009-11-19

11 answers

Oto co zrobiłem, od: blog.boxedice.com [[4]} i "iPhone Advanced Projects" Rozdział 10 autorstwa Joe Pezzillo.

Z aps_developer_identity.cer w breloku:

  1. Uruchom dostęp do pęku kluczy z lokalnego komputera Mac i z pęku kluczy logowania, Filtruj według kategorii Certyfikaty. Zobaczysz opcję rozszerzalną o nazwie "Apple Development Push Services"
  2. Kliknij prawym przyciskiem myszy "Apple Development Push Services" > Eksportuj "Apple Development Push Services ID123". Zapisz jest to plik apns-dev-cert.p12, do którego masz dostęp. Nie ma potrzeby wprowadzania hasła.
  3. Następne polecenie generuje cert w Terminalu Mac dla formatu pem (Privacy Enhanced Mail Security Certificate):

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

Na serwerze Ustaw uprawnienia do pliku tego niezaszyfrowanego klucza za pomocą chmod 400.

 321
Author: zaph,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-12 18:34:50

Faza Rozwoju:

Krok 1: Utwórz Certyfikat .pem z certyfikatu .p12
Dowództwo: openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12

Krok 2: Utwórz Klucz .pem z Key .p12
Dowództwo : openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12

Krok 3: Opcjonalny (jeśli chcesz usunąć hasło zapytane w drugim kroku)
Dowództwo : openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem

Krok 4: teraz musimy połączyć klucz .PEM i certyfikat .pem do rozwoju .pem potrzebne dla powiadomień Push w fazie rozwoju aplikacji
Dowództwo : cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem (If 3rd step is performed )

Dowództwo : cat apns-dev-cert.pem apns-dev-key.pem > apns-dev.pem (if not)

Krok 5: Sprawdź ważność certyfikatu i łączność z APN
Dowództwo: 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 )
Dowództwo: openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key-noenc.pem (If performed )

Faza Produkcji:

Krok 1: Utwórz Certyfikat .pem z certyfikatu .p12
Dowództwo: openssl pkcs12 -clcerts -nokeys -out apns-pro-cert.pem -in apns-pro-cert.p12

Krok 2: Utwórz Klucz .pem od klucza .p12
Dowództwo : openssl pkcs12 -nocerts -out apns-pro-key.pem -in apns-pro-key.p12

Krok 3: Opcjonalny (jeśli chcesz usunąć hasło zapytane w drugim kroku)
Dowództwo : openssl rsa -in apns-pro-key.pem -out apns-pro-key-noenc.pem

Krok 4: teraz musimy połączyć klucz .PEM i certyfikat .pem do produkcji .pem potrzebne do powiadomień Push w fazie produkcji aplikacji
polecenie: cat apns-pro-cert.pem apns-pro-key-noenc.pem > apns-pro.pem (If 3rd step is performed ) polecenie : cat apns-pro-cert.pem apns-pro-key.pem > apns-pro.pem (if not)

Krok 5: Sprawdź ważność certyfikatu i łączność z APNS
Dowództwo: 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 )
polecenie: openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key-noenc.pem (If performed)

 197
Author: Ashish Chhabra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-14 12:44:41

Kroki:

    Tworzenie CSR za pomocą Key Chain Access]}
  1. Utwórz P12 za pomocą dostępu do łańcucha kluczy za pomocą klucza prywatnego
  2. APNS App ID i certyfikat

To daje trzy pliki:

  • CSR
  • klucz prywatny jako plik p12(PushChatKey.p12)
  • certyfikat SSL, aps_development.cer

Przejdź do folderu, w którym pobrałeś pliki, w moim przypadku pulpit:

$ cd ~/Desktop/

Convert the .cer plik do a .pem plik:

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

Konwertuj klucz prywatny .plik p12 do a .plik pem:

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

Wprowadź Hasło Importu:

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

Najpierw musisz wprowadzić hasło do .plik p12, aby OpenSSL mógł go odczytać. Następnie musisz wprowadzić nowe hasło, które będzie używane do szyfrowania pliku PEM. Ponownie w tym tutorialu użyłem "pushchat" jako hasła PEM. Powinieneś wybrać coś bezpieczniejszego. Uwaga: jeśli nie podasz hasła PEM, OpenSSL będzie nie daje Komunikatu o błędzie, ale wygenerowany .plik pem nie będzie zawierał klucza prywatnego.

Na koniec połącz certyfikat i klucz w jeden .plik pem:

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

 54
Author: sarit bahuguna,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-28 01:57:39

Uruchom aplikację Terminal i wprowadź następujące polecenie po wierszu polecenia

  openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes
 17
Author: Durai Amuthan.H,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-19 03:04:28

->> własny tutorial Apple

Możesz znaleźć ich 5-stopniowy proces tworzenia pem na dole strony.

 10
Author: capikaw,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-01 11:12:34

Możesz spojrzeć tutaj. Mam szczegółowy proces opisany Obrazami, od utworzenia certyfikatu, przez klucz aplikacji do profilu provisioning, aż po pem. http://docs.moengage.com/docs/apns-certificate-pem-file

 4
Author: Gautam Jain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-01 07:03:38

Sugerowałbym znacznie prostsze rozwiązanie. Wystarczy użyć Certifire .
Certifire to aplikacja systemu macOS, która generuje Certyfikaty powiadomień Push Apple za pomocą jednego kliknięcia w kilka sekund.

Oto kroki:
1. Pobierz aplikację.
2. Zaloguj się, używając poświadczeń konta Apple Developer.
3. Wybierz App-ID
4. Kliknij przycisk "Generuj"
5. Jesteś skończony!

Otrzymasz certyfikaty APN .format pem jak i w .p12 format. Co więcej, otrzymasz również połączone .pem i .p12 też (klucz+cert)!
Co więcej, otrzymasz również wersje bez hasła wszystkich tych certyfikatów!

Tutaj wpisz opis obrazka

Tutaj wpisz opis obrazka

 2
Author: arturdev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-29 12:01:13

Tak zrobiłem w Windows 7, po zainstalowaniu OpenSSL (link idzie do instalatora Win32, wybierz najnowszą wersję, a nie wersję light).

Do tej metody potrzebny jest tylko plik .cer pobrany z Apple.

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

Spowoduje to utworzenie pliku, który następnie będziesz musiał dodać swój klucz prywatny.

-----POCZĄTEK KLUCZA PRYWATNEGO - - - - -
MIIEuwIBADANBgkqhk....etc
MIIEuwIBADANBgkqhk....etc
MIIEuwIBADANBgkqhk....etc
MIIEuwIBADANBgkqhk....etc
----- END PRIVATE KEY - - - - -
----- CERTYFIKAT BEGIN - - - - -
AwIBAgwIBADAwIBADA....etc
AwIBAgwIBADAwIBADA....etc
AwIBAgwIBADAwIBADA....etc
----- CERTYFIKAT KOŃCOWY - - - - -

To wszystko.
 1
Author: Rots,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-07 09:56:21

Nigdy nie pamiętam komendy openssl potrzebnej do utworzenia pliku .pem, więc zrobiłem ten skrypt Basha, aby uprościć proces:

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

Nazwij go, na przykład, signpem.sh i zapisz go w folderze użytkownika (/Users/<username>?). Po utworzeniu pliku wykonaj chmod +x signpem.sh, aby uczynić go wykonywalnym, a następnie możesz uruchomić:

~/signpem myCertificate.p12 myCertificate.pem

I myCertificate.pem zostaną utworzone.

 1
Author: Alejandro Iván,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-13 20:23:09

Jest najprostszy sposób tworzenia .Plik Pem jeśli masz już plik apns p12 w dostępie do łańcucha kluczy.

Otwórz terminal i wprowadź poniższe polecenie:

For Devlopment OpenSSL pkcs12-in apns-div-cert.p12-out apns-div-cert.pem-nodes-clcerts

Do Produkcji OpenSSL pkcs12-w apns-dist-cert.p12-out apns-dist-cert.pem-nodes-clcerts

Zmień nazwę pliku P12 o tej nazwie: apns-div-cert.p12 inaczej zamiast tego trzeba wprowadź nazwę pliku. Dzięki!!

 1
Author: Yash,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-28 13:11:59

Uwaga: Aby wykonać którekolwiek z tych zadań, musisz mieć rolę agenta zespołu lub administratora w App Store Connect. Jeśli nie jesteś częścią zespołu w App Store Connect, prawdopodobnie nie ma to wpływu na Ciebie.

Wysyłanie powiadomień push do aplikacji iOS wymaga utworzenia kluczy szyfrowania. W przeszłości był to uciążliwy proces wykorzystujący klucze SSL i certyfikaty. Każdy certyfikat SSL był specyficzny dla jednej aplikacji iOS. W 2016 roku Apple wprowadziło nowy mechanizm klucza uwierzytelniania, który jest bardziej niezawodny i łatwiejszy w użyciu. Nowe klucze uwierzytelniania są bardziej elastyczne, proste w utrzymaniu i dotyczą więcej niż w aplikacji na iOS.

Mimo że od wprowadzenia kluczy uwierzytelniających minęło wiele lat, nie każda usługa je obsługuje. FireBase i Amazon Pinpoint obsługują klucze uwierzytelniania. Amazon SNS, Urban Airship, Twilio i LeanPlum nie. Wiele pakietów oprogramowania open source nie obsługuje jeszcze kluczy uwierzytelniania.

Aby utworzyć wymagany certyfikat SSL i wyeksportować go jako plik PEM zawierający klucze publiczne i prywatne:

  1. przejdź do certyfikatów, identyfikatorów i profili
  2. Utwórz lub Edytuj identyfikator aplikacji.
  3. [14]}Włącz powiadomienia Push dla Identyfikatora aplikacji Dodaj certyfikat SSL do identyfikatora aplikacji
  4. Konwertuj certyfikat na format PEM

Jeśli masz już skonfigurowany certyfikat SSL dla aplikacji w witrynie Apple Developer Center, możesz pominąć proces konwersji certyfikat do formatu PEM. pamiętaj, że napotkasz problemy, jeśli nie posiadasz również klucza prywatnego wygenerowanego na komputerze Mac, który utworzył żądanie podpisania przesłane do Apple.

Czytaj dalej, aby dowiedzieć się, jak uniknąć utraty klucza prywatnego.

Przejdź do certyfikatów, identyfikatorów i profili

Xcode nie kontroluje certyfikatów ani kluczy do powiadomień push. Aby utworzyć klucze i włączyć powiadomienia push dla aplikacja musisz przejść do witryny Apple Developer Center. Sekcja certyfikaty, identyfikatory i profile aplikacji account controls IDs and certificates.

Aby uzyskać dostęp do certyfikatów i profili, musisz mieć płatne członkostwo w programie Apple Developer Program lub być częścią zespołu, który to robi.

  1. Zaloguj się do Apple Developer website Tutaj wpisz opis obrazka
  2. przejdź do Konta , Następnie certyfikaty, identyfikatory & Profile Tutaj wpisz opis obrazka
Tworzenie ID aplikacji]}

Aplikacje korzystające z powiadomień push nie mogą używać identyfikatorów aplikacji wieloznacznych ani profili app provisioning. Każda aplikacja wymaga skonfigurowania rekordu App ID w portalu Apple Developer Center, aby włączyć powiadomienia push.

  1. przejdź do identyfikatorów aplikacji pod identyfikatorów
  2. wyszukaj swoją aplikację za pomocą identyfikatora pakietu. Może już istnieć.
  3. Jeśli nie ma istniejącego identyfikatora aplikacji kliknij przycisk ( + ), aby go utworzyć.
  4. Wybierz jawny identyfikator aplikacjiw sekcji przyrostek App ID. Tutaj wpisz opis obrazka
  5. wprowadź identyfikator pakietu aplikacji.
  6. przewiń do dołu i włącz powiadomienia Push . Tutaj wpisz opis obrazka
  7. Kliknij Kontynuuj .
  8. na następnym ekranie Kliknij Zarejestruj , aby zakończyć tworzenie ID aplikacji. Tutaj wpisz opis obrazka

Włącz powiadomienia Push dla aplikacji ID

  1. przejdź do identyfikatorów aplikacji pod identyfikatorów
  2. Kliknij na ID aplikacji, aby zobaczyć szczegóły i przewiń do dołu. Tutaj wpisz opis obrazka
  3. Click Edit Tutaj wpisz opis obrazka
  4. w Ustawieniach App ID przewiń w dół do powiadomienia Push Tutaj wpisz opis obrazka
  5. zaznacz pole wyboru, aby włączyć powiadomienia push. Tutaj wpisz opis obrazka

Tworzenie certyfikatów SSL dla powiadomień push jest procesem z kilku zadań. Każde zadanie składa się z kilku kroków. Wszystko to jest niezbędne do eksportu kluczy w formacie P12 lub pem. Przejrzyj kroki przed kontynuowaniem.

Aby uzyskać więcej informacji, skontaktuj się z nami]}
  1. w fazie rozwoju certyfikat SSL Kliknij Utwórz certyfikat . Będziesz musiał to zrobić później również do produkcji.
  2. Apple poprosi o utworzenie żądania podpisania certyfikatu Tutaj wpisz opis obrazka

Aby utworzyć certyfikat musisz złóż wniosek o podpisanie certyfikatu (CSR) na komputerze Mac i prześlij go do firmy Apple.

Później, jeśli chcesz wyeksportować ten certyfikat jako plik pkcs12 (aka p12), musisz użyć pęku kluczy z tego samego Mac . Po utworzeniu żądania podpisania pęku kluczy dostęp generuje zestaw kluczy w domyślnym pęku kluczy. Klucze te są niezbędne do pracy z certyfikatem, który Apple utworzy na podstawie żądania podpisania.

Dobrą praktyką jest posiadanie oddzielnego breloka specjalnie dla poświadczeń używanych do rozwoju. Jeśli to zrobisz, upewnij się, że ten pęk kluczy jest ustawiony jako domyślny przed użyciem asystenta certyfikatu.
[[161]}Utwórz Pęk kluczy do poświadczeń programistycznych [162]}
    Dostęp do pęku kluczy na komputerze Mac]}
  1. w menu Plik Wybierz Nowy Pęk kluczy...
  2. nadaj swojemu pękowi kluczy opisową nazwę, np. "Shared Development" lub nazwę aplikacji

Utwórz certyfikat Wniosek o podpisanie (CSR)

Podczas tworzenia żądania podpisywania certyfikatu Asystent certyfikatu generuje dwa klucze szyfrowania w domyślnym pęku kluczy. Ważne jest, aby klucz rozwojowy był domyślny, więc klucze są we właściwym pęku kluczy.

  1. Otwórz dostęp do pęku kluczy na komputerze Mac.
  2. Kontrola-kliknij na pęk kluczy programistycznych na liście pęków kluczy
  3. Select Make keychain " wspólny rozwój" Default Tutaj wpisz opis obrazka
  4. z menu Dostęp do pęku kluczyWybierz Asystent certyfikatu, a następnie Zażądaj certyfikatu od urzędu certyfikacji... z menu podrzędnego. Tutaj wpisz opis obrazka
  5. Gdy pojawi się asystent certyfikatu sprawdź zapisany na dysku . Tutaj wpisz opis obrazka
  6. W polu adres e-mail użytkownika Wprowadź adres e-mail związany z uczestnictwem w programie Apple Developer.
  7. Enter a nazwa klucza w polu Nazwa zwyczajowa . Dobrym pomysłem jest użycie identyfikatora pakietu aplikacji jako części wspólnej nazwy. Ułatwia to określenie, które certyfikaty i klucze należą do jakiej aplikacji.
  8. kliknij Kontynuuj. Asystent certyfikatu wyświetli monit o zapisanie żądania podpisania w pliku.
  9. w Keychain Access Ustaw ponownie domyślny pęk kluczy "login".

Utworzenie żądania podpisania wygenerowało parę kluczy. Przed przesłaniem żądania podpisania sprawdź, czy pęk kluczy programistycznych zawiera klucze. Ich nazwy będą takie same jak nazwa zwyczajowa użyta w żądaniu podpisywania.

Tutaj wpisz opis obrazka

[161]} Prześlij żądanie podpisania certyfikatu (CSR)

Po utworzeniu żądania podpisania Certicate prześlij je do Apple Developer Center. Apple utworzy certyfikat powiadomień push na podstawie żądania podpisania.

  1. Prześlij żądanie podpisania certyfikatu
  2. Pobierz certyfikat firma Apple utworzyła na podstawie żądania podpisania certyfikatu Tutaj wpisz opis obrazka
  3. w Keychain Access wybierz pęk kluczy programistycznych z listy pęków kluczy
  4. z menu Plik Wybierz Importuj Elementy... Tutaj wpisz opis obrazka
  5. Importuj plik certyfikatu pobrany z Apple

Twój pęk kluczy programistycznych powinien teraz pokazywać certyfikat push z kluczem prywatnym pod Moje Certyfikaty w Pęku Kluczy Dostęp:

Tutaj wpisz opis obrazka

W tym momencie pęk kluczy programistycznych należy wykonać kopię zapasową. Wiele zespołów przechowuje certyfikaty push na bezpiecznych dyskach USB, zobowiązuje się do wewnętrznej kontroli wersji lub korzysta z rozwiązania do tworzenia kopii zapasowych, takiego jak Time Machine. Pęk kluczy programistycznych może być współdzielony między różnymi członkami zespołu, ponieważ nie zawiera żadnych osobistych poświadczeń podpisywania kodu.

Pliki pęku kluczy znajdują się w ~/Library/Keychains.

Niektóre usługi push stron trzecich wymaga certyfikatów w formacie Privacy Enhanced Mail (pem), podczas gdy inne wymagają standardów kryptografii klucza publicznego #12 (PKCS12 lub P12). Certyfikat pobrany z firmy Apple może być używany do eksportowania certyfikatów w tych formatach - ale tylko wtedy, gdy klucz prywatny został zachowany.

Konwertuj certyfikat na format PEM

  1. w Keychain Access wybierz pęk kluczy programistycznych utworzony wcześniej.
  2. Wybierz certyfikat push w Moje Certyfikaty . Powinno być klucz prywatny z nim. ![Pobierz certyfikat cer push] (pęk kluczy / import zakończony.png)
  3. z menu Plik Wybierz Eksportuj Elementy... Tutaj wpisz opis obrazka
  4. w otwartym panelu Zapisz wybierz Privacy Enhanced Mail (.pem) jako format pliku.
  5. Zapisz plik
 0
Author: quellish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-28 00:56:22