티스토리 뷰

개발/IOS

Spring 서버에서 사용할 APNS 인증서 준비

책 읽는 개발자_테드 2019. 11. 17. 09:29

 APNS(apple Push Notification Service)는 Apple device에서 앱이 보안 연결을 통해 원격 서버에서 사용자에게 푸시 알림을 보낼 수 있게 하는 클라우드 서비스입니다. 간략한 로직은 아래와 같습니다.

 

출처:https://medium.com/@ufukatalca/generate-apns-certificate-for-ios-push-notifications-ada9234d4c09

 

이 글은 위 프로그램의 Your Server 부분에 스프링을 통해 APNS를 사용하기 위한 파일을 생성하는 과정과 간단한 원리를 설명합니다.

 

CSR(Certificate Signing Request)발급

맥의 spotlight 검색을 통해 키체인을 검색하고 해당 탭에서 다음과 같인 csr을 발급합니다.

 

 

생성된 CSR 파일을 열어보면 다음과 같은 데이터가 보입니다. 이 데이터에는 공개키 정보, 인증서가 사용될 FQDN(Fully-qualified domain name), 본인이나 본인의 웹사이트 정보들이 저장됩니다. 공개키가 저장되므로 보안을 위해 비대칭키 알고리즘을 사용한다는 걸 알 수 있습니다.

 

APNS(Apple Push Notification Service) 인증서 발급

애플 개발자 사이트(https://developer.apple.com/kr/)에 접속한후 아래 이미지처럼 Identifiers 탭에 들어가 본인이 발급을 원하는 앱의

identifier를 클릭해주세요.

 

identifier를 클릭해서 들어간 페이지에서 Push Notifications 오른쪽 Edit을 클릭하세요.

 

Edit을 클릭해서 들어간 페이지에서 Create Certificat 버튼을 클릭하세요. Development SSL Certificate는 개발용, Production SSL Certificate는 출시용입니다. 용도에 맞는 걸 선택하시면 됩니다.

Create Certificat 버튼을 클릭해서 들어간 페이지에서 Choose File을 클릭해서 앞서 생성한 CSR 파일을 입력해주세요. 입력후

Continue 버튼을 누르면 APNS SSL Certificate가 생성되며, Download 버튼을 눌러 다운로드 받을 수 있습니다.

 

다운로드 받은 인증서를 더블클릭하면 아래처럼 키체인에 Apple IOS Push Service 인증서와 개인키가 등록됩니다.

 

p12 파일 생성

위에서 등록한 Apple IOS Push Service 인증서와 개인키를 함께 클릭한후 마우스 오른쪽을 눌러 '2개 항목 내보내기'를 클릭하여 .p12파일을 생성 합니다.

 

Pem 파일 생성

애플 개발자 홈페이지에서 다운로드 받은 인증서를 openssl을 이용해 다음과 같이 pem 파일을 만듭니다.

openssl x509 -in 애플개발자홈에서받은.cer -inform DER -out 애개홈.pem -outform PEM

 

키체인에서 2개 항목 내보내기'를 클릭해서 만든 .p12 파일을 openssl을 이용해 다음과 같이 pem 파일을 만듭니다.

openssl pkcs12 -nocerts -in 키체인에서만든.p12 -out 키체인.pem

 

#pem 파일이란 Privacy Enhanced Mail의 약자로 Base64 인코딩된 ASCII 파일입니다. 인증서, 개인키 등을 저장하는데 사용됩니다.

해당 정보들을 Base64 방식으로 encoding하면 다음과 같이 ASCII Text형식으로 표시됩니다.

 

#openssl이란 TLS/SSL(전송계층보안) 프로토콜의 오픈 소스 구현판입니다. 소스 내에 여러 암호화 라이브러리가 구현되어 있습니다. 

 

다시 p12 파일 생성

마지막으로 위에서 만든 2개의 pem 파일을 openssl을 통해 .p12 파일을 만듭니다.

openssl pkcs12 -export -inkey 키체인.pem -in 애개홈.pem -out 스프링서버에서사용할.p12 

 

이렇게 생성한 스프링서버에서사용할.p12을 스프링 서버에 올려 사용하면

APNS를 사용할 수 있습니다!

 

*추가개념정리

#x509

Public Key infrastructure에 대한 ITU-T의 표준으로 공개키 인증서의 포맷 revocation list(더이상 유효하지 않은 인증서들에 대한 정보), cerfication path validation 알고리즘 등을 정의한다. 보통 x509 인증서라고 하면 RFC 5290에 따라서 인코딩되거나 서명된 디지털 문서를 말합니다.

 

#DER

RSA Public Key를 표시하는 포맷은 DER 포맷과 PEM 포맷이 있습니다. PKCS 표준에서는 RSA KEY를 ASN.1 방식으로 표현하라고 규정합니다. DER 포맷은 ASN.1 구조에 맞추어 DER 인코딩을 한 것입니다. binary 형태로 저장됩니다.

 

#pkc12

public key Cryptography Standard 표준 중의 일부로 private key를 저장하는 문법에 관한 표준입니다. private key는 일반적으로 PEM 형식으로 인코딩됩니다.

 

출처

https://www.thesslstore.com/blog/what-is-a-csr/

https://www.letmecompile.com/certificate-file-format-extensions-comparison/

https://www.openssl.org/

https://ko.wikipedia.org/wiki/OpenSSL

https://wiki.openssl.org/index.php/DER

https://cbsm.tistory.com/10

https://m.blog.naver.com/PostView.nhn?blogId=aepkoreanet&logNo=221089013217&proxyReferer=https%3A%2F%2Fwww.google.com%2F

https://medium.com/@ufukatalca/generate-apns-certificate-for-ios-push-notifications-ada9234d4c09

 

 

 

'개발 > IOS' 카테고리의 다른 글

IOS에서 스토리보드를 통해 기본 화면 구성하기  (0) 2020.01.05
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함