[ iOS ] APNS 인증서 생성 및 발급 PEM, P12 파일 만들기 1

아이폰을 개발하면서 처음에 어려운 부분이 있다면 아마도 인증서 발급, 프로비저닝 생성과 같은 환경설정일 것입니다. 대부분의 설정이 최근에는 자동으로 만들어지거나 기능이 축소되면서 오래전부터 지원하는 기능을 수동으로 만들려면 헤맬 수도 있습니다. 특히 앱을 만들면 Push 서비스를 거의 기본적으로 탑재하게 되는데 오늘은 서버 개발자에게 전달하기 위한 인증서의 종류와 만드는 방법에 대해서 알아보겠습니다.

 

인증서를 만들기 전에 몇 가지 개념이 필요합니다.

 

  1. P12, P8의 차이점
  2. 개발용 인증서와 배포용 인증서
  3. PEM파일 
  4. 키체인
  5. OpenSSL

 

P12 키, P8 키 차이점

우선 P12는 예전부터 존재하는 방식으로 1년마다 갱신되는 인증서라고 생각하면 좋습니다. 개발용의 경우 365일 동안 유지되며 배포용의 경우 그보다 30일 많은 395일 유지됩니다. 당연히 그다음부터는 인증서가 만료되고 사용이 중지됩니다. 또한 P8키의 경우 영구적으로 사용할 수 있으며 매번 갱신해야 되는 불편함 때문에 나중에 도입되었습니다. 하지만 이 키는 한 번 발급받으면 다시 다운로드를 할 수 없으므로 잘 보관해서 써야 합니다.

 

개발용 인증서와 배표용 인증서

애플 개발에 필요한 인증서의 종류는 여러 가지입니다. 개발용 인증서, 배포용 인증서, 그리고 Push 인증서가 있습니다. Push 인증서 역시 개발용과 배포용이 따로 있습니다. 최근에는 Xcode를 로그인하면 자동으로 개발용 인증서를 만들어주고 배포용 인증서도 앱스토어에 앱을 업로드할 때 자동으로 생성이 가능합니다. 단 배포용 인증서의 경우 3개까지 만들 수 있습니다.

 

PEM 파일

SSL 인증서의 Base64 버전이라고 생각하면 됩니다. 바이너리 데이터를 ASCII 문자열로 변환해서 텍스트 파일로 저장하고 이를 사용할 수 있습니다. 단순 문자열이기 때문에 텍스트 파일에 저장이 가능하고 어디서든 범용적으로 사용할 수 있는 인증서 파일 포맷입니다. 대체적으로 자바에서는. p12 확장자의 파일을 사용해서 APNS 푸시를 보낼 수 있지만 PHP로 만들어진 서버에서는 보통 pem 파일을 필요로 합니다.

 

키체인 인증서

애플 맥에는 키체인 접근이라는 응용프로그램이 있습니다. 키체인 인증서는 공개키와 비 공개키를 포함한 인증서명 파일을 만들 수 있습니다. 키체인 인증서가 만들어지면 이 인증서로 새로운 애플 SSL 각종 인증서를 발급받을 수 있습니다. 최근에는 이러한 절차가 모두 Xcode에 포함되어 있어 개발자는 따로 프로비저닝이나 인증서를 만들지 않고도 애플 개발자 로그인을 하게 되면 컴퓨터가 자동으로 인증서를 만들고 사용이 가능하게 되어 있습니다. 하지만 이렇게 하면 애플 푸시 인증서를 만들 수 없기 때문에 직접 인증서를 만드는 과정이 필요합니다. 만약 P8 키를 사용한다면 이러한 절차 또한 필요가 없게 돼서 모두 자동으로 되는 것처럼 느낄 수 있습니다.

 

OpenSSL

PEM 파일을 생성하기 위해서는 OpenSSL 프로그램으로 변환 과정을 거쳐야 합니다. OpenSSL이란 오픈소스로 네트워크를 통한 데이터 전달 프로토콜인 TLS와 SSL을 지원합니다. 여러 암호화 기능을 포함하고 있고 함수들이 존재합니다. 애플 인증서를 만들기 위해서는 그중에 RSA 방식의 공개 키 암호화 방식을 사용합니다.

 

 

목차

  • 개인 인증서 만들기 (키체인 인증서)
  • APNS 서비스 활성화
  • P12 파일 생성
  • PEM 파일 생성

 

 1. 애플 기본앱중에 키체인 접근이라는 앱을 실행합니다. 영어로는 (keychain access) 

키체인 접근


 

 

 

 1. 키체인 접근 앱에서 메뉴 중에 인증서 지원 > 인증 기관에서 인증서 요청... 메뉴를 선택합니다.

키체인 지원 > 인증서 만들기


 

 

 

 2. 인증서 정보에 사용자 이메일 주소와 이름을 입력합니다. 개인 이메일이나 회사 이메일을 적고 이름을 입력하면 됩니다. 요청 항목을 디스크에 저장됨으로 선택하고 본인이 키 쌍 정보 저장을 선택해줍니다.

인증정보 입력


 

 

 

 3. 계속을 누르면 다음과 같이 저장 팝업이 노출됩니다. 저장을 눌러서 인증서를 저장합니다.

 

인증서 저장하기


 

 

 

 4. 인증서를 저장했다면 이와 매칭되는 키를 저장합니다. 키 크기는 2048비트로 설정하고 알고리즘은 RSA로 설정합니다. 이렇게 되면 공개키와 비공개 키가 각각 만들어집니다. 계속을 눌러 저장해줍니다.

RSA 암호키 생성


 

 

 

 5. 이제 애플 개발자 페이지에서 사용할 인증서가 만들어졌습니다. 물론 새로 만들수도 있겠지만 나중에 다시 만들어야 하는 번거로움을 피하려면 이 인증서를 따로 잘 보관하는 게 좋습니다.

인증서 생성 완료


 

 

 

 

 6. 이번에는 애플 개발자 사이트에서 푸시 인증서발급을 해보겠습니다. Certificates, Identifiers & Profiles 페이지로 이동하셔서 Software 메뉴를 스크롤해서 Service 메뉴로 이동합니다. Software 항목들은 개발에 필요한 인증서를 발급받는 페이지입니다.

Certificates, Identifiers & Profiles


 

 

 

 7. 아래쪽에 보면 Services 메뉴가 있는데 만약 배포용 푸시 인증서를 만들려면 이중에 두 번째 항목을 선택합니다. 인증서는 다음과 같은 차이점이 있습니다.

  • Apple Push Notification service SSL (Sandbox) : 개발 전용 인증서로 365일의 만료기간을 가집니다.
  • Apple Push Notification service SSL (Sandbox & Production) : 배포용 인증서로 365일 보다 한 달 만은 395일의 만료기간을 가집니다.

Apple Push Notification service SSL


 

 

 

 

 8. 이제 인증서를 만들기 위해서 App ID를 선택해줍니다. 기존에 만든 앱이 있다면 App ID가 존재할 겁니다. 만약 없다면 앱부터 만들어야 합니다. App ID를 선택하고 Continue 버튼을 눌러줍니다.

App ID 선택하기


 

 

 

 9. 다음 페이지에서 이전에 만든 Certificate Signing (인증서) 파일을 업로드해줍니다. 아래 이미지에서 보듯이 Choose File을 선택하고 해당 파일을 선택한 뒤 열기 버튼을 눌러줍니다.

인증서 업로드


 

 

 

 10. 인증서가 업로드된 것을 확인했다면 Continue 버튼을 눌러서 계속 진행해서 푸시용 인증서를 만들어줍니다.

인증서 생성


 

 

 

 11. 푸시 인증서가 만들어졌다면 Download 버튼을 눌러서 다운로드합니다.

푸시인증서 다운로드


 

 

 

 12. 파일 이름은 기본적으로 aps입니다. 그대로 저장해도 되고 이름을 변경해서 저장해도 됩니다.

인증서를 파일로 저장


 

 

 

 13. 이제 푸시용 인증서가 만들어진 것을 확인할 수 있습니다. 더블 클릭을 해서 파일을 열어줍니다. 그러면 자동으로 키체인에 인증서가 저장됩니다.

인증서 적용


 

 

지금까지 키쌍 정보와 함께 발급용 인증서를 만들고 실제 푸시 인증서를 만들어 보았습니다. 내용이 너무 길어 다음 포스팅에 이어서 쓰도록 하겠습니다. 다음에는 이 인증서를 추출해서 실제 서버 개발자에게 전달하는 과정과 P12 파일에서 PEM 파일로 변환하는 과정을 소개합니다.

 

https://tttap.tistory.com/213

 

[ iOS ] APNS 인증서 생성 및 발급 PEM, P12 파일 만들기 2

지난 시간에 이어서 APNS 푸시 인증서를 만드는 방법에 대해 글을 쓰겠습니다. 한 번에 블로그에 올리려고 하니 내용이 너무 많고 복잡해서 지난 번에는 개인인증서를 만드는 법과 APNS 서비스를

tttap.tistory.com

 

댓글

Designed by JB FACTORY