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

지난 시간에 이어서 APNS 푸시 인증서를 만드는 방법에 대해 글을 쓰겠습니다. 한 번에 블로그에 올리려고 하니 내용이 너무 많고 복잡해서 지난 번에는 개인인증서를 만드는 법과 APNS 서비스를 활성화 하는 방법에 대해서 알아봤습니다. 오늘은 실제 P12 파일과 PEM 파일 변환으로 서버에서 푸시 인증서를 사용할 수 있도록 해당 인증서를 파일로 만들어보겠습니다. 저번에 설명드렸듯이 P12 파일을 쓰는 경우와 PEM을 쓰는 경우 각각 다르기 때문에 해당 서버에 맞는 방법으로 생성을 해야 합니다.

 

목차

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

 

 1. 우선 키체인 인증 앱을 실행합니다. 여기서 조금전에 만든 푸시 인증서를 확인할 수 있습니다. 이 파일을 내보내기를 해야 합니다. 중요한 점은 인증서와 키를 모두 선택하고 내보내기를 해야 한다는 점입니다.

푸시 인증서 추출


 

 

 

 2. 두 개의 항목을 선택하고 오른쪽 버튼을 눌러 2개 항목 내보내기를 선택합니다.

2개 항목 내보내기


 

 

 

 

 3. 내보낸 항목을 보호하는 데 사용할 암호를 입력합니다. 암호는 서버에서 푸시인증서를 열때 필요하므로 미리 약속된 암호를 사용해야 합니다. 만약 기존에 서버에서 쓰고 있는 인증서를 만료되어 새로 교체할 경우에는 서버개발자에게 패스워드를 물어보고 해당 인증서에 대한 패스워드를 동일하게 넣어주는 것이 좋습니다.

인증서 암호 입력


 

 

 

 4. 확인버튼을 눌러서 진행을 하면 해당 비밀키를 최초로 사용할 경우 다음과 같이 '로그인' 키체인 암호를 입력하라고 뜹니다. 이것은 푸시 인증서에 비밀번호를 말하는 것이 아니라 컴퓨터의 비밀번호를 말합니다. 본인의 컴퓨터 비밀번호를 입력하고 항상 허용을 눌러줍니다. 그냥 허용버튼을 눌러도 되긴 하지만 매번 물어보면 번거롭기 때문에 그냥 항상 허용으로 해줍니다.

키체인 접근 항상 허용


 

 

 

 5. 자 이번에는 키를 내보내볼게요. 위의 P12 인증서도 필요하지만 키 또한 따로 필요합니다. 이 경우는 PEM 파일로 변환할 경우에 필요합니다. PEM 파일은 조금 복잡한 변환과정이 필요한데 이때 이 키가 부수적으로 필요합니다.

키 내보내기


 

 

 

 

 6. 이름은 각각 apns_cert, apns_key 로 하겠습니다. 조금 후에 터미털에서 작업해야 하니 이 이름으로 하지 않았다면 가급적 해당 이름으로 바꾸는게 편하실 겁니다.

인증서 파일 저장하기


 

 

 

 7. 키 비밀번호도 역시 P12 파일의 암호와 동일하게 해줍니다. (주의, 로그인 비밀번호 아님)

인증서 비밀번호 입력


 

 

 

 8. 이번는 로그인 비밀번호를 누르고 항상 허용을 눌러줍니다.

로그인 비밀번호 입력


 

 

 

 9. 두개의 키가 다음과 같이 만들어졌다면 PEM으로 변환할 준비가 끝났습니다. 이제 터미널앱을 실행시켜줍니다. 스팟라이트에서 Terminal 이라고 입력하면 검은 아이콘 모양의 기본 프로그램을 찾을 수 있습니다.

인증서 확인


 

 

 

 10. 이제 openssl 명령을 이용해 다음과 같이 입력해줍니다. 내용을 설명드리자면 p12 파일을 pem으로 변환하는데 옵션 값을 nokeys, clerts 를 준다고 생각하시면 됩니다. 다음 명령어를 치면 패스워드를 치라고 하는데 위에서 입력했던 푸시 인증서 패스워드를 그대로 입력해줍니다. 터미널 환경이다보니 키를 입력해도 입력되지 않는 것 처럼 보입니다. 이를 주의하고 그냥 자연스럽게 패스워드를 치고 엔터를 쳐줍니다.

openssl pkcs12 -clcerts -nokeys -out apns_cert.pem -in apns_cert.p12

apns_cert 파일 pem 파일 만들기


 

 

 

 11. 이제 ls 명령으로 새로 만들어진 pem 파일을 확인하실 수 있습니다.

pem 파일 확인


 

 

 

 

 12. 이번에는 키 파일도 동일하게 p12 파일에서 pem 파일로 변환해보겠습니다. 위에서 입력한 코드랑 유사하지만 다른 점은 비밀번호를 총 3번 쳐야한다는 점입니다.  아까와 다르게 -nocerts 옵션을 넣었습니다. 즉 인증서가 없다는 뜻이죠.

openssl pkcs12 -nocerts -out apns_key.pem -in apns_key.p12

apns_key pem 파일 만들기


 

 

 

 13. 이제 방금전에 만든 apns_key.pem 파일을 이용해서 rsa로 암호화된 pem 파일로 변환시켜야 합니다. 다음 명령을 사용합니다.

openssl rsa -in apns_key.pem -out apns_key_noenc.pem

rsa를 적용한 pem 인증서 생성


 

 

 

 14. ls 명령을 사용해 새로 만들어진 apns_key_noenc.pem 파일을 확인합니다.

pem 인증서 확인


 

 

 

 15. 이제 모든 파일 생성은 끝났습니다. 이제 만들어진 apns_cert.pem 파일과 apns_key_noenc.pem 파일을 출력해서 새로운 파일로 만들어 줍니다.

cat apns_cert.pem apns_key_noenc.pem > apns.pem

파일 합치기


 

 

 

 16. 다시 ls 명령을 이용해서 apns.pem 파일이 만들어진 것을 확인합니다.

최종 pem 파일


 

 

 

이제 만들어진 파일을 서버 개발자에게 전달하면 됩니다. P12가 필요한 경우도 있고 pem이 필요한 경우도 있죠 보통 자바에서는 P12파일을 사용하고 PHP같은 언어에서는 PEM 파일을 필요로합니다. 인증서를 만드는 부분에 대해서는 다음 글을 참고하세요.

 

https://tttap.tistory.com/212

 

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

아이폰을 개발하면서 처음에 어려운 부분이 있다면 아마도 인증서 발급, 프로비저닝 생성과 같은 환경설정일 것입니다. 대부분의 설정이 최근에는 자동으로 만들어지거나 기능이 축소되면서

tttap.tistory.com

 

댓글

Designed by JB FACTORY