Tworzysz plik .pem dla APNS?

177

Jak utworzyć plik .pem, który będzie przechowywany na serwerze hostującym dla danych ładunku APN?

Biranchi
źródło
1
Czy mogę użyć .p12 dla apns zamiast .pem?
Gajendra K Chauhan
Definicja FYI .pem: serverfault.com/a/21158/193377 PEM sam w sobie nie jest certyfikatem, to tylko sposób kodowania danych. .... można bezpiecznie wkleić do treści wiadomości e-mail, ponieważ zawiera ona linie zakotwiczenia i jest 7-bitowa czysta.
AnneTheAgile

Odpowiedzi:

365

Oto, co zrobiłem, From: blog.boxedice.com i „iPhone Advanced Projects”, rozdział 10 autorstwa Joe Pezzillo.

Z plikiem aps_developer_identity.cer w pęku kluczy:

  1. Uruchom dostęp do pęku kluczy z lokalnego komputera Mac i z pęku kluczy logowania, filtruj według kategorii Certyfikaty. Zobaczysz rozwijaną opcję o nazwie „Apple Development Push Services”
  2. Kliknij prawym przyciskiem myszy „Apple Development Push Services”> Eksportuj „Apple Development Push Services ID123 ″. Zapisz to jako apns-dev-cert.p12plik w miejscu, do którego masz do niego dostęp. Nie ma potrzeby podawania hasła.
  3. Następne polecenie generuje certyfikat w terminalu Maca dla formatu PEM (Certyfikat bezpieczeństwa poczty wzmocnionego prywatności):

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

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

uff
źródło
3
Wykonałem powyższe kroki i teraz wszystko działa. Zachowałem certyfikat i skrypt php na moim lokalnym serwerze WWW (Xampp). Jestem w stanie uzyskać token urządzenia i używam go w skrypcie php. Skrypt php może łączyć się i wysyłać dane ładunku. Ale nadal nie mogę uzyskać powiadomienia PUSH. Jaki jest problem ? Czy powiadomienia potrzebują czasu, aby dotrzeć ???
Biranchi
12
W przypadku dostępu do pęku kluczy Mavericks (10.9) istnieje opcja eksportu do pliku .pem! Po prostu kliknij prawym przyciskiem myszy „Certyfikat Apple Development / Production iOS Push Services w Keychain Access i wybierz opcję eksportu. Zmień format pliku na .pem - gotowe! Dostępne również jako opcje eksportu: .p7b i .p12
tylerl
5
.pem jest dla mnie wyłączony, yosemite beta7. Mam pewne problemy z utworzeniem .pem, kiedy go otwieram, mówi, że jest przeznaczony do dystrybucji zamiast dev
Cristi Băluță
2
.pem nie jest dla mnie wyłączony, ale nie mogę zapisać jako p12. Tak to wygląda: i.imgur.com/U2M40dU.png
FooBar
2
W przypadku systemu macOS 10.14 Mojave przy użyciu aplikacji Dostęp do pęku kluczy możesz wybrać opcję Eksportuj swój „certyfikat Apple Push Services: com.yourBundleIdentifier” do formatu pliku „Poczta o zwiększonej prywatności (.pem)” i zapisuj ją w dowolnym momencie.
5uper_0leh
226

Faza rozwoju:

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

Krok 2: Utwórz klucz .pem z klucza .p12
openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12

Krok 3 (opcjonalnie): Jeśli chcesz usunąć frazę hasła zadaną w drugim kroku
openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem

Krok 4: Teraz musimy połączyć klucz .pem i certyfikat .pem, aby uzyskać programistyczny plik .pem potrzebny do powiadomień push w fazie opracowywania aplikacji.

Jeśli wykonałeś 3 krok, uruchom:
cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem

Jeśli trzeci krok nie został wykonany, uruchom:
cat apns-dev-cert.pem apns-dev-key.pem > apns-dev.pem

Krok 5: Sprawdź ważność certyfikatu i łączność z APNS

Jeśli wykonałeś 3 krok, uruchom:
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key-noenc.pem

Jeśli trzeci krok nie został wykonany, uruchom:
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key.pem

Faza produkcji:

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

Krok 2: Utwórz klucz .pem z klucza .p12
openssl pkcs12 -nocerts -out apns-pro-key.pem -in apns-pro-key.p12

Krok 3 (opcjonalnie): Jeśli chcesz usunąć frazę hasła zadaną w drugim kroku
openssl rsa -in apns-pro-key.pem -out apns-pro-key-noenc.pem

Krok 4: Teraz musimy scalić plik klucza .pem i certyfikat .pem, aby uzyskać plik produkcyjny .pem potrzebny do powiadomień push w fazie produkcyjnej aplikacji.

Jeśli wykonałeś 3 krok, uruchom:
cat apns-pro-cert.pem apns-pro-key-noenc.pem > apns-pro.pem

Jeśli trzeci krok nie został wykonany, uruchom:
cat apns-pro-cert.pem apns-pro-key.pem > apns-pro.pem

Krok 5: Sprawdź ważność certyfikatu i łączność z APNS.

Jeśli wykonałeś 3 krok, uruchom:
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key-noenc.pem

Jeśli trzeci krok nie został wykonany, uruchom:
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key.pem

Ashish Chhabra
źródło
5
Dziękuję, to jedyna ta, która pracowała dla mnie.
Erik Villegas
6
Zapisałem to w moim cennym skarbcu! : P Najlepsza odpowiedź w historii !!
Zaczernienie
3
Jesteś bogiem, to działa, dziękuję. GŁOS W GŁOS. To powinna być odpowiedź, ponieważ szczegółowo omawia, jak ją stworzyć krok po kroku
MNM
2
Z pewnością powinna to być akceptowana odpowiedź, ponieważ odpowiedź @Rahul Sharma nie przyniosła oczekiwanego rezultatu, podczas gdy ta odpowiedź była doskonała.
Nowdeen
Dzięki zaoszczędziłeś mi godziny na sprawdzenie ważności certyfikatu. To powinna być akceptowana odpowiedź @Biranchi
Sourabh Sharma
59

Kroki:

  1. Utwórz CSR za pomocą Key Chain Access
  2. Utwórz P12 za pomocą Key Chain Access przy użyciu klucza prywatnego
  3. Identyfikator i certyfikat aplikacji APNS

W ten sposób otrzymujesz trzy pliki:

  • CSR
  • Klucz prywatny jako plik p12 ( PushChatKey.p12)
  • Certyfikat SSL, aps_development.cer

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

$ cd ~/Desktop/

Przekonwertuj plik .cer na plik .pem:

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

Przekonwertuj plik .p12 klucza prywatnego na 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 pliku .p12, aby openssl mógł go odczytać. Następnie musisz wprowadzić nowe hasło, które zostanie użyte do zaszyfrowania pliku PEM. Ponownie w tym samouczku użyłem „pushchat” jako hasła PEM. Powinieneś wybrać coś bezpieczniejszego. Uwaga: jeśli nie wprowadzisz hasła PEM, openssl nie wyświetli komunikatu o błędzie, ale wygenerowany plik .pem nie będzie zawierał klucza prywatnego.

Na koniec połącz certyfikat i klucz w jednym pliku .pem:

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

sarit bahuguna
źródło
22

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

  openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes
Durai Amuthan.H
źródło
1
Po wygenerowaniu p12 powinna to być odpowiedź.
Stone
10

- >> Samouczek firmy Apple << - to jedyny działający zestaw instrukcji, z jakim się spotkałem. Jest to proste i mogę potwierdzić, że działa doskonale zarówno na serwerze php linux, jak i serwerze php systemu Windows.

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

capikaw
źródło
Tak! Wystarczy postępować zgodnie z prostym samouczkiem. Tylko jedno proste polecenie openssl. Nie wiem, czy to ma znaczenie, ale uruchomiłem polecenie przez SSH na serwerze, który łączy się z APNS.
tylerl
1
@tylerl, PEM można wygenerować z dowolnej maszyny - nie musi to być serwer, na którym będzie się znajdował.
capikaw
Czy muszę uruchamiać ten proces na samym serwerze, na którym jest wdrażany kod PHP? czy mogę użyć pliku .pem wygenerowanego z mojego komputera Mac?
Jatin
4
Link jest uszkodzony od września 2015 r.
Nicolas Miari
4

UWAGA: Aby wykonać którekolwiek z tych zadań, musisz mieć rolę agenta zespołu lub administratora w App Store Connect. Jeśli nie należysz do zespołu w App Store Connect, prawdopodobnie nie ma to na Ciebie wpływu.

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 na iOS. W 2016 roku Apple wprowadził nowy mechanizm klucza uwierzytelniania, który jest bardziej niezawodny i łatwiejszy w użyciu. Nowe klucze uwierzytelniania są bardziej elastyczne, proste w utrzymaniu i mają zastosowanie do większej liczby użytkowników 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 tego nie robią. Wiele pakietów oprogramowania typu open source nie obsługuje jeszcze kluczy uwierzytelniających.

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 swój identyfikator aplikacji.
  3. Włącz powiadomienia push dla identyfikatora aplikacji
  4. Dodaj certyfikat SSL do identyfikatora aplikacji
  5. Przekonwertuj certyfikat na format PEM

Jeśli masz już skonfigurowany certyfikat SSL dla aplikacji w witrynie Apple Developer Center, możesz przejść od razu do sekcji Konwertuj certyfikat do formatu PEM. Pamiętaj, że napotkasz problemy, jeśli nie masz również klucza prywatnego wygenerowanego na komputerze Mac, na którym utworzono żądanie podpisania przesłane do Apple.

Czytaj dalej, aby dowiedzieć się, jak uniknąć utraty śledzenia tego 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 aplikacji, musisz przejść do witryny Apple Developer Center. Sekcja Certyfikaty, identyfikatory i profile konta kontroluje identyfikatory aplikacji i certyfikaty.

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

  1. Zaloguj się do witryny Apple Developer wprowadź opis obrazu tutaj
  2. Przejdź do Konta , a następnie Certyfikaty, identyfikatory i profile wprowadź opis obrazu tutaj

Utwórz identyfikator aplikacji

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

  1. Przejdź do identyfikatorów aplikacji w obszarze identyfikatory
  2. Wyszukaj swoją aplikację, korzystając z identyfikatora pakietu. Może już istnieć.
  3. Jeśli nie ma istniejącego identyfikatora aplikacji dla aplikacji, kliknij przycisk (+), aby ją utworzyć.
  4. Wybierz opcję Explicit App ID w sekcji App ID Suffix. wprowadź opis obrazu tutaj
  5. Wprowadź identyfikator pakietu dla aplikacji.
  6. Przewiń w dół i włącz powiadomienia push . wprowadź opis obrazu tutaj
  7. Kliknij Kontynuuj .
  8. Na następnym ekranie kliknij Zarejestruj, aby zakończyć tworzenie identyfikatora aplikacji. wprowadź opis obrazu tutaj

Włącz powiadomienia push dla identyfikatora aplikacji

  1. Przejdź do identyfikatorów aplikacji w obszarze identyfikatory
  2. Kliknij identyfikator aplikacji, aby wyświetlić szczegóły i przewinąć w dół. wprowadź opis obrazu tutaj
  3. Kliknij Edytuj wprowadź opis obrazu tutaj
  4. Na ekranie Ustawienia identyfikatora aplikacji przewiń w dół do opcji Powiadomienia push wprowadź opis obrazu tutaj
  5. Zaznacz pole wyboru, aby włączyć powiadomienia push. wprowadź opis obrazu tutaj

Tworzenie certyfikatów SSL dla powiadomień push to proces składający się z kilku zadań. Każde zadanie ma kilka kroków. Wszystko to jest niezbędne do eksportu kluczy w formacie P12 lub PEM. Przejrzyj kroki przed kontynuowaniem.

Dodaj certyfikat SSL do identyfikatora aplikacji

  1. W sekcji Development SSL Certificate kliknij Create Certificate . Będziesz musiał to zrobić później również w przypadku produkcji.
  2. Apple poprosi Cię o utworzenie żądania podpisania certyfikatu wprowadź opis obrazu tutaj

Aby utworzyć certyfikat, musisz wysłać żądanie podpisania certyfikatu (CSR) na komputerze Mac i przesłać je do Apple.

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

Dobrą praktyką jest posiadanie oddzielnego pęku kluczy specjalnie dla poświadczeń używanych do programowania. Jeśli to zrobisz, upewnij się, że ten pęk kluczy jest ustawiony jako domyślny przed użyciem Asystenta certyfikatu.

Utwórz pęku kluczy dla poświadczeń programistycznych

  1. Otwórz dostęp do pęku kluczy na komputerze Mac
  2. W menu Plik wybierz Nowy pęku kluczy ...
  3. Nadaj pękowi kluczy opisową nazwę, na przykład „Programowanie współdzielone” lub nazwę aplikacji

Utwórz żądanie podpisania certyfikatu (CSR)

Podczas tworzenia żądania podpisania certyfikatu Asystent certyfikatu generuje dwa klucze szyfrowania w domyślnym pęku kluczy. Ważne jest, aby programowanie pęku kluczy było domyślnym, aby klucze znajdowały się we właściwym pęku kluczy.

  1. Otwórz dostęp do pęku kluczy na komputerze Mac.
  2. Kliknij z naciśniętym klawiszem Control na rozwijanym pęku kluczy na liście pęków kluczy
  3. Wybierz Ustaw pęk kluczy jako domyślny „Programowanie współdzielone” wprowadź opis obrazu tutaj
  4. Z menu Dostęp do pęku kluczy wybierz Asystent certyfikatu , a następnie z podmenu Żądaj certyfikatu od urzędu certyfikacji ....wprowadź opis obrazu tutaj
  5. Gdy pojawi się Asystent certyfikatu, zaznacz opcję Zapisano na dysku . wprowadź opis obrazu tutaj
  6. Wprowadź adres e-mail powiązany z Twoim członkostwem w programie Apple Developer w polu Adres e-mail użytkownika .
  7. Wprowadź nazwę klucza w polu Nazwa zwykła . Dobrym pomysłem jest użycie identyfikatora pakietu aplikacji jako części nazwy zwyczajowej. Dzięki temu łatwo jest stwierdzić, które certyfikaty i klucze należą do której aplikacji.
  8. Kliknij Kontynuuj. Asystent certyfikatu poprosi o zapisanie żądania podpisania do pliku.
  9. W programie Dostęp do pęku kluczy ustaw ponownie pęk kluczy „logowania” jako domyślny.

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

wprowadź opis obrazu tutaj

Prześlij żądanie podpisania certyfikatu (CSR)

Po utworzeniu wniosku o podpisanie certyfikatu prześlij go do Apple Developer Center. Apple utworzy certyfikat powiadomienia wypychanego na podstawie żądania podpisania.

  1. Prześlij żądanie podpisania certyfikatu
  2. Pobierz certyfikat utworzony przez firmę Apple na podstawie żądania podpisania certyfikatu wprowadź opis obrazu tutaj
  3. W aplikacji Dostęp do pęku kluczy z listy pęków kluczy wybierz programistyczny pęk kluczy
  4. Z menu Plik wybierz Importuj elementy ... wprowadź opis obrazu tutaj
  5. Zaimportuj plik certyfikatu pobrany z Apple

Twój pęk kluczy programistycznych powinien teraz wyświetlać certyfikat wypychania z kluczem prywatnym w obszarze Moje certyfikaty w Dostępie do pęku kluczy:

wprowadź opis obrazu tutaj

W tym momencie należy utworzyć kopię zapasową pęku kluczy deweloperskich. Wiele zespołów przechowuje swoje 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. Programistyczny pęk kluczy może być współużytkowany przez różnych członków zespołu, ponieważ nie zawiera żadnych osobistych poświadczeń do podpisywania kodu.

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

Niektóre usługi push innych firm wymagają certyfikatów w formacie Privacy Enhanced Mail (PEM), podczas gdy inne wymagają standardów kryptografii klucza publicznego nr 12 (PKCS12 lub P12). Certyfikat pobrany od Apple może służyć do eksportowania certyfikatów w tych formatach - ale tylko wtedy, gdy zachowałeś klucz prywatny.

Przekonwertuj certyfikat na format PEM

  1. W Dostęp do pęku kluczy wybierz utworzony wcześniej pęku kluczy programistycznych.
  2. Wybierz certyfikat wypychania w sekcji Moje certyfikaty . Powinien być z nim klucz prywatny. ! [Pobierz certyfikat wypychania CER] (pęku kluczy / importowanie zakończone.png)
  3. Z menu Plik wybierz Eksportuj elementy ... wprowadź opis obrazu tutaj
  4. W otwartym panelu zapisywania jako format pliku wybierz opcję Privacy Enhanced Mail (.pem) .
  5. Zapisz plik
quellish
źródło
3

Sugerowałbym znacznie prostsze rozwiązanie. Po prostu użyj Certifire .
Certifire to aplikacja dla systemu macOS, która w ciągu kilku sekund generuje certyfikaty powiadomień Apple Push Notification jednym kliknięciem.

Oto kroki:
1. Pobierz aplikację.
2. Zaloguj się, używając poświadczeń konta Apple Developer Account.
3. Wybierz identyfikator aplikacji
4. Kliknij przycisk „Generuj”
5. Gotowe!

Otrzymasz certyfikaty APN w formacie .pem, a także w formacie .p12. Co więcej, otrzymasz również połączone pliki .pem i .p12 (klucz + certyfikat)!
O wiele więcej, otrzymasz także wersje bez hasła dla wszystkich tych certyfikatów!

wprowadź opis obrazu tutaj

wprowadź opis obrazu tutaj

arturdev
źródło
2

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

Dzięki tej metodzie potrzebujesz tylko .cerpliku pobranego z Apple.

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

utworzy to plik, do którego będziesz musiał dodać również swój klucz prywatny.

----- ROZPOCZNIJ KLUCZ PRYWATNY -----
MIIEuwIBADANBgkqhk .... etc
MIIEuwIBADANBgkqhk .... etc
MIIEuwIBADANBgkqhk .... etc
MIIEuwIBADANBgkqhk .... etc
----- KONIEC KLUCZA PRYWATNEGO -----
----- BEGIN CERTIFICATE -----
AwIBAgwIBADAwIBADA .... etc
AwIBAgwIBADAwIBADA .... etc
AwIBAgwIBADAwIBADA .... etc
----- END CERTIFICATE -----

Otóż ​​to.

Gnije
źródło
2

Istnieje najłatwiejszy sposób na utworzenie pliku .Pem, jeśli masz już plik apns p12 w swoim dostępie do łańcucha kluczy.

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

Dla Devlopment openssl pkcs12 -in apns-div-cert.p12 -out apns-div-cert.pem -nodes -clcerts

Do produkcji openssl pkcs12 -in apns-dist-cert.p12 -out apns-dist-cert.pem -nodes -clcerts

Zmień nazwę pliku P12 na tę nazwę: apns-div-cert.p12 w przeciwnym razie zamiast tego musisz wprowadzić nazwę pliku. Dzięki!!

Yash
źródło
1

Nigdy nie pamiętam opensslpolecenia potrzebnego do utworzenia .pempliku, więc zrobiłem ten skrypt bash, 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

Na przykład signpem.shnazwij go i zapisz w folderze użytkownika ( /Users/<username>?). Po utworzeniu pliku zrób, chmod +x signpem.shaby był wykonywalny, a następnie możesz uruchomić:

~/signpem myCertificate.p12 myCertificate.pem

I myCertificate.pemzostanie stworzony.

Alejandro Iván
źródło