APN 페이로드 데이터를 위해 호스팅 서버에 저장 될 .pem 파일을 어떻게 만듭니 까?
APN 페이로드 데이터를 위해 호스팅 서버에 저장 될 .pem 파일을 어떻게 만듭니 까?
답변:
여기 내가 한 일이있다 : blog.boxedice.com 과 Joe Pezzillo의 "iPhone Advanced Projects"10 장.
키 체인에 aps_developer_identity.cer를 사용하면 :
apns-dev-cert.p12
파일을 액세스 할 수있는 파일 로 저장하십시오 . 비밀번호를 입력 할 필요가 없습니다.다음 명령은 Mac 터미널에서 PEM 형식으로 인증서를 생성합니다 (개인 정보 보호 강화 된 메일 보안 인증서).
openssl pkcs12 -in apns-dev-cert.p12 -out apns-dev-cert.pem -nodes -clcerts
서버에서 chmod 400을 사용하여이 암호화되지 않은 키의 파일 권한을 설정하십시오.
개발 단계 :
1 단계 : 인증서 .p12에서 인증서 .pem 만들기
openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12
2 단계 : 키 .p12에서 키 .pem 만들기
openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12
3 단계 (선택 사항) : 두 번째 단계에서 요청한 암호 문구를 제거하려는 경우
openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem
4 단계 : 이제 앱의 개발 단계에서 푸시 알림에 필요한 개발 .pem을 가져 오려면 Key .pem과 Certificate .pem을 병합해야합니다.
3 단계를 수행 한 경우 다음을 실행하십시오.
cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem
3 단계를 수행 하지 않은 경우 다음을 실행하십시오.
cat apns-dev-cert.pem apns-dev-key.pem > apns-dev.pem
5 단계 : 인증서 유효성 및 APNS에 대한 연결 확인
3 단계를 수행 한 경우 다음을 실행하십시오.
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key-noenc.pem
3 단계를 수행 하지 않은 경우 다음을 실행하십시오.
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key.pem
생산 단계 :
1 단계 : 인증서 .p12에서 인증서 .pem 만들기
openssl pkcs12 -clcerts -nokeys -out apns-pro-cert.pem -in apns-pro-cert.p12
2 단계 : 키 .p12에서 키 .pem 만들기
openssl pkcs12 -nocerts -out apns-pro-key.pem -in apns-pro-key.p12
3 단계 (선택 사항) : 두 번째 단계에서 요청한 암호 문구를 제거하려는 경우
openssl rsa -in apns-pro-key.pem -out apns-pro-key-noenc.pem
4 단계 : 이제 앱의 프로덕션 단계에서 푸시 알림에 필요한 프로덕션 .pem을 가져 오려면 Key .pem과 Certificate .pem을 병합해야합니다.
3 단계를 수행 한 경우 다음을 실행하십시오.
cat apns-pro-cert.pem apns-pro-key-noenc.pem > apns-pro.pem
3 단계를 수행 하지 않은 경우 다음을 실행하십시오.
cat apns-pro-cert.pem apns-pro-key.pem > apns-pro.pem
5 단계 : 인증서 유효성 및 APNS에 대한 연결 확인
3 단계를 수행 한 경우 다음을 실행하십시오.
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key-noenc.pem
3 단계를 수행 하지 않은 경우 다음을 실행하십시오.
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key.pem
단계 :
이것은 당신에게 세 파일을 제공합니다 :
PushChatKey.p12
)aps_development.cer
파일을 다운로드 한 폴더 (내 경우에는 데스크탑)로 이동하십시오.
$ cd ~/Desktop/
.cer 파일을 .pem 파일로 변환하십시오.
$ openssl x509 -in aps_development.cer -inform der -out PushChatCert.pem
개인 키의 .p12 파일을 .pem 파일로 변환하십시오.
$ openssl pkcs12 -nocerts -out PushChatKey.pem -in PushChatKey.p12
비밀번호 가져 오기를 입력하십시오.
MAC verified OK
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
openssl이 읽을 수 있도록 먼저 .p12 파일의 암호를 입력해야합니다. 그런 다음 PEM 파일을 암호화하는 데 사용할 새 암호를 입력해야합니다. 이 자습서에서는 다시 Push 암호로 "pushchat"을 사용했습니다. 더 안전한 것을 선택해야합니다. 참고 : PEM 암호를 입력하지 않으면 openssl에 오류 메시지가 나타나지 않지만 생성 된 .pem 파일에는 개인 키가 없습니다.
마지막으로 인증서와 키를 단일 .pem 파일로 결합하십시오.
$ cat PushChatCert.pem PushChatKey.pem > ck.pem
->> Apple의 자체 튜토리얼 <<-은 내가 만난 유일한 작업 지침입니다. 그것은 똑바로 Linux PHP 서버와 Windows PHP 서버 모두에서 훌륭하게 작동한다는 것을 확인할 수 있습니다.
페이지 하단에서 5 단계 pem 작성 프로세스를 찾을 수 있습니다.
여기서 볼 수 있습니다. 인증서 생성에서부터 앱 키, 프로비저닝 프로파일, 결국 pem에 이르기까지 이미지로 설명 된 자세한 프로세스가 있습니다. http://docs.moengage.com/docs/apns-certificate-pem-file
참고 : 이러한 작업을 수행하려면 App Store Connect에서 팀 에이전트 또는 관리자 역할이 있어야합니다. App Store Connect 팀에 소속되지 않은 경우에는 이것이 영향을 미치지 않습니다.
iOS 애플리케이션으로 푸시 알림을 보내려면 encyption 키를 작성해야합니다. 과거에는 SSL 키와 인증서를 사용한 번거로운 프로세스였습니다. 각 SSL 인증서는 단일 iOS 애플리케이션에 고유했습니다. 2016 년에 Apple은보다 안정적이고 사용하기 쉬운 새로운 인증 키 메커니즘을 도입했습니다. 새로운 인증 키는 iOS 앱보다 더 유연하고 유지 관리가 쉽고 적용 할 수 있습니다.
인증 키가 도입 된 지 수년이 지났지 만 모든 서비스가이를 지원하지는 않습니다. FireBase 및 Amazon Pinpoint는 인증 키를 지원합니다. Amazon SNS, Urban Airship, Twilio 및 LeanPlum은 그렇지 않습니다. 많은 오픈 소스 소프트웨어 패키지는 아직 인증 키를 지원하지 않습니다.
필요한 SSL 인증서를 작성하고 공개 및 개인 키를 포함하는 PEM 파일로 내보내려면 다음을 수행하십시오.
Apple Developer Center 웹 사이트에서 앱에 SSL 인증서가 이미 설정되어 있다면 인증서를 PEM 형식으로 변환으로 건너 뛸 수 있습니다. 그렇게하지 않으면 당신이 문제로 실행됩니다 있다는 사실을 숙지 도 애플에 업로드 된 서명 요청을 만든 Mac에서 생성 된 개인 키를 가지고있다.
해당 개인 키를 추적하지 않도록하는 방법을 보려면 계속 읽으십시오.
Xcode는 푸시 알림에 대한 인증서 또는 키를 제어하지 않습니다. 앱에 키를 생성하고 푸시 알림을 활성화하려면 Apple Developer Center 웹 사이트로 이동해야합니다. 계정의 인증서, 식별자 및 프로필 섹션은 앱 ID 및 인증서를 제어합니다.
인증서 및 프로파일에 액세스하려면 유료 Apple Developer Program 멤버십이 있거나 해당 팀의 구성원이어야합니다.
푸시 알림을 사용하는 앱은 와일드 카드 앱 ID 또는 프로비저닝 프로파일을 사용할 수 없습니다. 각 앱을 사용하려면 푸시 알림을 활성화하기 위해 Apple Developer Center 포털에서 앱 ID 레코드를 설정해야합니다.
푸시 알림을위한 SSL 인증서 생성은 여러 작업의 프로세스입니다. 각 작업에는 여러 단계가 있습니다. 이들 모두는 P12 또는 PEM 형식으로 키를 내보내는 데 필요합니다. 계속하기 전에 단계를 검토하십시오.
인증서를 생성하려면 Mac에서 CSR (Certificate Signing Request)을 작성하여 Apple에 업로드해야합니다.
나중에이 인증서를 pkcs12 (일명 p12) 파일로 내 보내야하는 경우 동일한 Mac 의 키 체인을 사용해야합니다 . 서명 요청이 생성되면 Keychain Access는 기본 키 체인에서 일련의 키를 생성합니다. 이 키는 Apple이 서명 요청에서 생성 한 인증서로 작업하는 데 필요합니다.
개발에 사용되는 자격 증명을 위해 별도의 키 체인을 사용하는 것이 좋습니다. 이렇게하면 Certificate Assistant를 사용하기 전에이 키 체인이 기본값으로 설정되어 있는지 확인하십시오.
인증서 서명 요청을 작성할 때 인증 지원은 기본 키 체인에 두 개의 암호화 키를 생성합니다. 키가 올바른 키 체인에 있도록 개발 키 체인을 기본값으로 만드는 것이 중요합니다.
서명 요청을 작성하면 키 쌍이 생성되었습니다. 서명 요청을 업로드하기 전에 개발 키 체인에 키가 있는지 확인하십시오. 그들의 이름은 서명 요청에 사용 된 일반 이름 과 동일합니다 .
Certicate Signing Request가 생성되면 Apple Developer Center에 업로드하십시오. Apple은 서명 요청에서 푸시 알림 인증서를 생성합니다.
개발 키 체인은 이제 키 체인 액세스의 내 인증서 아래에 개인 키와 함께 푸시 인증서를 표시해야합니다 .
이 시점에서 개발 키 체인을 백업해야합니다. 많은 팀이 푸시 인증서를 안전한 USB 드라이브에 보관하고, 내부 버전 관리를 약속하거나 Time Machine과 같은 백업 솔루션을 사용합니다. 개발 키 체인은 개인 코드 서명 자격 증명이 없으므로 다른 팀 구성원간에 공유 할 수 있습니다.
키 체인 파일은에 있습니다
~/Library/Keychains
.
일부 타사 푸시 서비스에는 PEM (Privacy Enhanced Mail) 형식의 인증서가 필요한 반면 다른 키는 PKCS12 또는 P12 (Public-Key Cryptography Standards # 12)가 필요합니다. Apple에서 다운로드 한 인증서를 사용하여 이러한 형식으로 인증서를 내보낼 수 있지만 개인 키를 유지 한 경우에만 가능합니다.
훨씬 간단한 해결책을 제안합니다. Certifire 만 사용 하십시오 .
Certifire 는 몇 초 안에 단 한 번의 클릭으로 Apple Push Notification 인증서를 생성하는 macOS 응용 프로그램입니다.
단계는 다음과 같습니다.
1. 앱을 다운로드합니다.
2. Apple 개발자 계정 자격 증명을 사용하여 로그인하십시오.
3. App-ID를 선택하십시오.
4. "생성"버튼을 클릭하십시오.
. 5. 완료되었습니다!
APN 인증서는 .pem 형식과 .p12 형식으로 제공됩니다. 또한 .pem과 .p12도 결합됩니다 (key + cert)!
훨씬 더, 당신은 이러한 모든 인증서의 암호 없음 버전을 얻을 것이다!
이것이 설치 후 Windows 7에서 수행 한 방법입니다 OpenSSL (링크는 Win32 설치 프로그램으로 이동하고 가벼운 버전이 아닌 최신 버전을 선택하십시오).
이 방법을 사용하면 .cer
Apple에서 다운로드 한 파일 만 필요합니다 .
c:\OpenSSL-Win32\bin\openssl.exe x509 -in aps_development.cer -inform DER -out developer_identity.pem -outform PEM
이렇게하면 파일이 생성되고 개인 키도 추가해야합니다.
----- PRIVATE KEY ----- BEGIN
MIIEuwIBADANBgkqhk .... 등
MIIEuwIBADANBgkqhk .... 등
MIIEuwIBADANBgkqhk .... 등
등 MIIEuwIBADANBgkqhk ...
----- END PRIVATE KEY를 -----
----- 인증서 시작 -----
AwIBAgwIBADAwIBADA .... etc
AwIBAgwIBADAwIBADA .... 등
AwIBAgwIBADAwIBADA .... 등
----- END 인증서 ----
그게 다야.
키 체인 액세스에 p12 파일을 이미 apns 한 경우 .Pem 파일을 작성하는 가장 쉬운 방법이 있습니다.
터미널을 열고 아래 명령을 입력하십시오 :
개발 openssl pkcs12의 경우 -pns-div-cert.p12 -out apns-div-cert.pem -nodes -clcerts
프로덕션 openssl pkcs12-apns-dist-cert.p12 -out apns-dist-cert.pem -nodes -clcerts
P12 파일의 이름을 apns-div-cert.p12로 바꾸십시오. 그렇지 않으면 파일 이름을 입력해야합니다. 감사!!
파일 openssl
을 만드는 데 필요한 명령을 기억하지 못 .pem
하므로 프로세스를 단순화하기 위해이 bash 스크립트를 만들었습니다.
#!/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
예를 들어 이름을 지정하고 signpem.sh
사용자의 폴더 ( /Users/<username>
?) 에 저장하십시오 . 파일을 생성 한 후 파일 chmod +x signpem.sh
을 실행 가능하게 만들려면 다음을 수행하십시오.
~/signpem myCertificate.p12 myCertificate.pem
그리고 myCertificate.pem
만들어 질 것입니다.