APNS 용 .pem 파일을 작성 하시겠습니까?


177

APN 페이로드 데이터를 위해 호스팅 서버에 저장 될 .pem 파일을 어떻게 만듭니 까?


1
.pem 대신 apn에 .p12를 사용할 수 있습니까?
Gajendra K Chauhan

.pem의 FYI 정의 : serverfault.com/a/21158/193377 PEM 자체는 인증서가 아니며 데이터를 인코딩하는 방법 일뿐입니다. .... 앵커 라인이 있고 7 비트로 깨끗하기 때문에 전자 메일 메시지 본문에 붙여 넣는 것이 안전합니다.
AnneTheAgile

답변:


365

여기 내가 한 일이있다 : blog.boxedice.comJoe Pezzillo의 "iPhone Advanced Projects"10 장.

키 체인에 aps_developer_identity.cer를 사용하면 :

  1. 로컬 Mac 및 로그인 키 체인에서 키 체인 액세스를 시작하고 인증서 범주별로 필터링하십시오. "Apple Development Push Services"라는 확장 가능한 옵션이 표시됩니다
  2. "Apple Development Push Services"> 마우스 오른쪽 버튼으로 "Apple Development Push Services ID123"을 클릭하십시오. 이 apns-dev-cert.p12파일을 액세스 할 수있는 파일 로 저장하십시오 . 비밀번호를 입력 할 필요가 없습니다.
  3. 다음 명령은 Mac 터미널에서 PEM 형식으로 인증서를 생성합니다 (개인 정보 보호 강화 된 메일 보안 인증서).

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

서버에서 chmod 400을 사용하여이 암호화되지 않은 키의 파일 권한을 설정하십시오.


3
위의 단계를 밟아 이제는 작동합니다. 인증서와 PHP 스크립트를 로컬 웹 서버 (Xampp)에 보관했습니다. 장치 토큰을 얻을 수 있으며 PHP 스크립트에서 사용하고 있습니다. PHP 스크립트는 페이로드 데이터를 연결하고 전송할 수 있습니다. 그러나 여전히 PUSH 알림을받을 수 없습니다. 무엇이 문제입니까? 알림에 도달하는 데 시간이 걸립니까 ???
Biranchi

12
Mavericks (10.9) 키 체인 액세스에는 .pem으로 내보낼 수있는 옵션이 있습니다! "Keychain Access 내부의 Apple Development / Production iOS 푸시 서비스 인증서를 마우스 오른쪽 버튼으로 클릭하고 내보내기를 선택하십시오. 파일 형식을
.pem-

5
.pem은 yosemite beta7에서 사용할 수 없습니다. .pem을 만드는 데 문제가 있습니다. .pem을 열면 배포 용입니다.
Cristi Băluță

2
.pem이 비활성화되어 있지 않지만 p12로 저장할 수 없습니다. 이것은 다음과 같습니다 : i.imgur.com/U2M40dU.png
FooBar

2
Keychain Access 앱을 사용하는 macOS 10.14 Mojave의 경우 "Apple Push Services : com.yourBundleIdentifier certificate"를 파일 형식 "Privacy Enhanced Mail (.pem)"으로 내보내기를 선택하고 원하는 때에 저장할 수 있습니다.
5uper_0leh

226

개발 단계 :

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


5
고맙습니다. 여기서 나를 위해 일한 유일한 곳입니다.
Erik Villegas

6
이것을 나의 소중한 금고에 저장했습니다! : P 최고의 답변 !!
Blackening

3
당신은 이것이 작동하는 신입니다. 감사합니다. 투표권. 단계별로 작성하는 방법에 대한 심층적 인 설명이 필요합니다.
MNM

2
@Rahul Sharma의 답변은 예상 결과를 얻지 못했지만이 답변은 완벽했기 때문에 분명히 이것이 받아 들여지는 대답이어야합니다.
Nowdeen

인증서 유효 기간을 확인하기 위해 시간을 절약 해 주셔서 감사합니다. 이것은 허용 대답 @Biranchi해야한다
Sourabh 샤르마

59

단계 :

  1. 키 체인 액세스를 사용하여 CSR 생성
  2. 개인 키를 사용하여 키 체인 액세스를 사용하여 P12 생성
  3. APNS 앱 ID 및 인증서

이것은 당신에게 세 파일을 제공합니다 :

  • CSR
  • p12 파일 인 개인 키 ( PushChatKey.p12)
  • SSL 인증서 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


22

터미널 응용 프로그램을 시작하고 프롬프트 후에 다음 명령을 입력하십시오

  openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes

1
p12를 생성 한 후에는 이것이 정답입니다.
Stone

10

->> Apple의 자체 튜토리얼 <<-은 내가 만난 유일한 작업 지침입니다. 그것은 똑바로 Linux PHP 서버와 Windows PHP 서버 모두에서 훌륭하게 작동한다는 것을 확인할 수 있습니다.

페이지 하단에서 5 단계 pem 작성 프로세스를 찾을 수 있습니다.


예! 간단한 튜토리얼을 따르십시오. 하나의 간단한 openssl 명령입니다. 중요한지는 모르겠지만 APNS에 연결된 서버로 SSH를 연결하여 명령을 실행했습니다.
tylerl

1
@tylerl, PEM은 어느 컴퓨터에서나 생성 할 수 있습니다. PEM이 상주 할 서버 일 필요는 없습니다.
capikaw

PHP 코드가 배포 된 서버 자체에서이 프로세스를 실행해야합니까? 또는 내 Mac에서 생성 된 .pem 파일을 사용할 수 있습니까?
Jatin

4
2015 년 9 월 링크가 끊어짐
Nicolas Miari



4

참고 : 이러한 작업을 수행하려면 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 파일로 내보내려면 다음을 수행하십시오.

  1. 인증서, 식별자 및 프로파일로 이동
  2. 앱 ID 생성 또는 편집
  3. 앱 ID에 대한 푸시 알림 활성화
  4. 앱 ID에 SSL 인증서 추가
  5. 인증서를 PEM 형식으로 변환

Apple Developer Center 웹 사이트에서 앱에 SSL 인증서가 이미 설정되어 있다면 인증서를 PEM 형식으로 변환으로 건너 뛸 수 있습니다. 그렇게하지 않으면 당신이 문제로 실행됩니다 있다는 사실을 숙지 애플에 업로드 된 서명 요청을 만든 Mac에서 생성 된 개인 키를 가지고있다.

해당 개인 키를 추적하지 않도록하는 방법을 보려면 계속 읽으십시오.

인증서, 식별자 및 프로파일로 이동

Xcode는 푸시 알림에 대한 인증서 또는 키를 제어하지 않습니다. 앱에 키를 생성하고 푸시 알림을 활성화하려면 Apple Developer Center 웹 사이트로 이동해야합니다. 계정의 인증서, 식별자 및 프로필 섹션은 앱 ID 및 인증서를 제어합니다.

인증서 및 프로파일에 액세스하려면 유료 Apple Developer Program 멤버십이 있거나 해당 팀의 구성원이어야합니다.

  1. Apple 개발자 웹 사이트에 로그인 여기에 이미지 설명을 입력하십시오
  2. 계정으로 이동 한 다음 인증서, 식별자 및 프로파일로 이동하십시오. 여기에 이미지 설명을 입력하십시오

앱 ID 만들기

푸시 알림을 사용하는 앱은 와일드 카드 앱 ID 또는 프로비저닝 프로파일을 사용할 수 없습니다. 각 앱을 사용하려면 푸시 알림을 활성화하기 위해 Apple Developer Center 포털에서 앱 ID 레코드를 설정해야합니다.

  1. 식별자 아래의 앱 ID로 이동
  2. 번들 식별자를 사용하여 앱을 검색하십시오. 이미 존재할 수 있습니다.
  3. 앱의 기존 앱 ID가 없으면 [+) 버튼을 클릭하여 앱을 만듭니다.
  4. 앱 ID 접미사 섹션 에서 명시 적 앱 ID 를 선택 하십시오. 여기에 이미지 설명을 입력하십시오
  5. 앱의 번들 식별자를 입력하십시오.
  6. 맨 아래로 스크롤하여 푸시 알림을 활성화하십시오 . 여기에 이미지 설명을 입력하십시오
  7. 계속을 클릭하십시오 .
  8. 다음 화면에서 등록 을 클릭 하여 앱 ID 생성을 완료 하십시오 . 여기에 이미지 설명을 입력하십시오

앱 ID에 대한 푸시 알림 활성화

  1. 식별자 아래의 앱 ID로 이동
  2. 앱 ID를 클릭하여 세부 정보를보고 맨 아래로 스크롤하십시오. 여기에 이미지 설명을 입력하십시오
  3. 편집을 클릭 하십시오 여기에 이미지 설명을 입력하십시오
  4. 앱 ID 설정 화면에서 아래로 스크롤하여 푸시 알림 여기에 이미지 설명을 입력하십시오
  5. 푸시 알림을 활성화하려면 확인란을 선택하십시오. 여기에 이미지 설명을 입력하십시오

푸시 알림을위한 SSL 인증서 생성은 여러 작업의 프로세스입니다. 각 작업에는 여러 단계가 있습니다. 이들 모두는 P12 또는 PEM 형식으로 키를 내보내는 데 필요합니다. 계속하기 전에 단계를 검토하십시오.

앱 ID에 SSL 인증서 추가

  1. 개발 SSL 인증서에서 인증서 작성을 클릭 하십시오 . 나중에 생산을 위해이 작업을 수행해야합니다.
  2. Apple에서 인증서 서명 요청을 작성하도록 요청합니다 여기에 이미지 설명을 입력하십시오

인증서를 생성하려면 Mac에서 CSR (Certificate Signing Request)을 작성하여 Apple에 업로드해야합니다.

나중에이 인증서를 pkcs12 (일명 p12) 파일로 내 보내야하는 경우 동일한 Mac 의 키 체인을 사용해야합니다 . 서명 요청이 생성되면 Keychain Access는 기본 키 체인에서 일련의 키를 생성합니다. 이 키는 Apple이 서명 요청에서 생성 한 인증서로 작업하는 데 필요합니다.

개발에 사용되는 자격 증명을 위해 별도의 키 체인을 사용하는 것이 좋습니다. 이렇게하면 Certificate Assistant를 사용하기 전에이 키 체인이 기본값으로 설정되어 있는지 확인하십시오.

개발 자격 증명을위한 키 체인 생성

  1. Mac에서 키 체인 액세스 열기
  2. 에서 파일 메뉴를 선택 새로운 키 체인을 ...
  3. 키 체인에 "공유 개발"또는 응용 프로그램 이름과 같은 구체적인 이름을 지정하십시오.

CSR (인증서 서명 요청) 생성

인증서 서명 요청을 작성할 때 인증 지원은 기본 키 체인에 두 개의 암호화 키를 생성합니다. 키가 올바른 키 체인에 있도록 개발 키 체인을 기본값으로 만드는 것이 중요합니다.

  1. Mac에서 키 체인 액세스를 엽니 다.
  2. 키 체인 목록에서 개발 키 체인을 Control- 클릭
  3. 키 체인 "공유 개발"을 기본값으로 설정을 선택하십시오. 여기에 이미지 설명을 입력하십시오
  4. 로부터 키 체인 접근 메뉴 선택 인증 지원은 , 다음 ... 인증 기관에서 인증서를 요청 하위 메뉴에서. 여기에 이미지 설명을 입력하십시오
  5. 인증 지원이 나타나면 디스크에 저장을 확인하십시오 . 여기에 이미지 설명을 입력하십시오
  6. 사용자 이메일 주소 에 Apple Developer Program 멤버십과 연관된 이메일 주소를 입력하십시오. 필드 .
  7. 공통 이름 필드에 키 이름을 입력하십시오 . 앱의 번들 ID를 공통 이름의 일부로 사용하는 것이 좋습니다. 이를 통해 어떤 앱에 어떤 인증서와 키가 속하는지 쉽게 알 수 있습니다.
  8. 계속을 클릭하십시오. 인증 지원이 서명 요청을 파일에 저장하라는 메시지를 표시합니다.
  9. 키 체인 접근에서 "로그인"키 체인을 다시 기본값으로 설정하십시오.

서명 요청을 작성하면 키 쌍이 생성되었습니다. 서명 요청을 업로드하기 전에 개발 키 체인에 키가 있는지 확인하십시오. 그들의 이름은 서명 요청에 사용 된 일반 이름 과 동일합니다 .

여기에 이미지 설명을 입력하십시오

CSR (인증서 서명 요청) 업로드

Certicate Signing Request가 생성되면 Apple Developer Center에 업로드하십시오. Apple은 서명 요청에서 푸시 알림 인증서를 생성합니다.

  1. 인증서 서명 요청 업로드
  2. 인증서 서명 요청에서 Apple이 생성 한 인증서 다운로드 여기에 이미지 설명을 입력하십시오
  3. 키 체인 접근의 키 체인 목록에서 개발 키 체인을 선택하십시오.
  4. 로부터 파일 메뉴 선택 항목 가져 오기를 ... 여기에 이미지 설명을 입력하십시오
  5. Apple에서 다운로드 한 인증서 파일 가져 오기

개발 키 체인은 이제 키 체인 액세스의 내 인증서 아래에 개인 키와 함께 푸시 인증서를 표시해야합니다 .

여기에 이미지 설명을 입력하십시오

이 시점에서 개발 키 체인을 백업해야합니다. 많은 팀이 푸시 인증서를 안전한 USB 드라이브에 보관하고, 내부 버전 관리를 약속하거나 Time Machine과 같은 백업 솔루션을 사용합니다. 개발 키 체인은 개인 코드 서명 자격 증명이 없으므로 다른 팀 구성원간에 공유 할 수 있습니다.

키 체인 파일은에 있습니다 ~/Library/Keychains.

일부 타사 푸시 서비스에는 PEM (Privacy Enhanced Mail) 형식의 인증서가 필요한 반면 다른 키는 PKCS12 또는 P12 (Public-Key Cryptography Standards # 12)가 필요합니다. Apple에서 다운로드 한 인증서를 사용하여 이러한 형식으로 인증서를 내보낼 수 있지만 개인 키를 유지 한 경우에만 가능합니다.

인증서를 PEM 형식으로 변환

  1. 키 체인 접근에서 이전에 작성된 개발 키 체인을 선택하십시오.
  2. 인증서에서 푸시 인증서를 선택하십시오 . 개인 키가 있어야합니다. ! [CER 푸시 인증서 다운로드] (keychain / import complete.png)
  3. 로부터 파일 메뉴를 선택 내보내기 항목을 ... 여기에 이미지 설명을 입력하십시오
  4. 저장 패널이 열리면 파일 형식으로 Privacy Enhanced Mail (.pem) 을 선택하십시오 .
  5. 파일을 저장하십시오

3

훨씬 간단한 해결책을 제안합니다. Certifire 만 사용 하십시오 .
Certifire 는 몇 초 안에 단 한 번의 클릭으로 Apple Push Notification 인증서를 생성하는 macOS 응용 프로그램입니다.

단계는 다음과 같습니다.
1. 앱을 다운로드합니다.
2. Apple 개발자 계정 자격 증명을 사용하여 로그인하십시오.
3. App-ID를 선택하십시오.
4. "생성"버튼을 클릭하십시오.
. 5. 완료되었습니다!

APN 인증서는 .pem 형식과 .p12 형식으로 제공됩니다. 또한 .pem과 .p12도 결합됩니다 (key + cert)!
훨씬 더, 당신은 이러한 모든 인증서의 암호 없음 버전을 얻을 것이다!

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오


2

이것이 설치 후 Windows 7에서 수행 한 방법입니다 OpenSSL (링크는 Win32 설치 프로그램으로 이동하고 가벼운 버전이 아닌 최신 버전을 선택하십시오).

이 방법을 사용하면 .cerApple에서 다운로드 한 파일 만 필요합니다 .

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 인증서 ----

그게 다야.


2

키 체인 액세스에 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로 바꾸십시오. 그렇지 않으면 파일 이름을 입력해야합니다. 감사!!


1

파일 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만들어 질 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.