Jak utworzyć plik .pem, który będzie przechowywany na serwerze hostującym dla danych ładunku APN?
Jak utworzyć plik .pem, który będzie przechowywany na serwerze hostującym dla danych ładunku APN?
Odpowiedzi:
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:
apns-dev-cert.p12
plik w miejscu, do którego masz do niego dostęp. Nie ma potrzeby podawania hasła.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.
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
Kroki:
W ten sposób otrzymujesz trzy pliki:
PushChatKey.p12
)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
Uruchom aplikację Terminal i wprowadź następujące polecenie po monicie
openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes
- >> 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.
Możesz zajrzeć tutaj. Mam szczegółowy proces opisany za pomocą obrazów, od stworzenia certyfikatu, przez klucz aplikacji, profil aprowizacji, aż po PEM. http://docs.moengage.com/docs/apns-certificate-pem-file
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:
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.
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.
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.
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.
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.
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.
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.
Po utworzeniu wniosku o podpisanie certyfikatu prześlij go do Apple Developer Center. Apple utworzy certyfikat powiadomienia wypychanego na podstawie żądania podpisania.
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:
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.
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!
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 .cer
pliku 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.
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!!
Nigdy nie pamiętam openssl
polecenia potrzebnego do utworzenia .pem
pliku, 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.sh
nazwij go i zapisz w folderze użytkownika ( /Users/<username>
?). Po utworzeniu pliku zrób, chmod +x signpem.sh
aby był wykonywalny, a następnie możesz uruchomić:
~/signpem myCertificate.p12 myCertificate.pem
I myCertificate.pem
zostanie stworzony.