[iOS] iOS 앱 관련 인증서 정리 첫번째

[iOS] iOS 앱 관련 인증서 정리 첫번째

iOS 개발을 접하게 되면서 너무나 당황스럽고 어려운 것이 인증서였다.

인증서를 발급받고 등록하고 사용하는 과정도 어려웠지만,

애초에 인증서 종류가 너무 많다보니 인증서 간의 차이도 모르겠고, 도대체 왜 이렇게 많은 인증서가 필요한 것인지 짜증이 났다.

아무튼 간략하게 iOS 앱 관련 인증서를 정리해본다.

1. CSR

CSR은 Cert Signing Request 의 약자, 인증서 서명요청이라는 뜻이다.

CSR은 간단하게 말하면 인증서 발급을 위한 신청서다.

인증서라고 보기는 어렵고, 인증서 발급을 위해 필요한 것이다.

이 CSR 이라는게 상당히 헷갈리는 요소다.

왜 그래야하는지는 모르겠지만, 인증서 발급을 할 때 [CSR 발급 신청] -> [CSR 발급됨] -> [CSR로 인증서 발급 신청] -> [인증서 발급됨] 과정을 거쳐야 한다.

어째서 이렇게 복잡한 과정을 만들었는지 모르겠다.

고수 분들은 이해하겠지만 애플의 큰 뜻이 있을 것이다. 난 아직 큰 뜻 그런거 모르고 짜증난다.

2. 배포 인증서

앱을 배포하기 위한 인증서이다.

가장 중요한 인증서다.

배포 인증서가 만료되면 앱을 더 이상 사용할 수 없다고 “카더라”. 경험해본 적은 없다.

=> 2020/06/02 내용 추가. 배포 인증서가 만료되면 앱을 더 이상 사용할 수 없다. 앱 아이콘을 클릭해도 구동되지 않는다. 사용자 친화적인(user-friendly) 메시지는 나오지 않았고 그냥 잠깐 검은 화면이 나왔다가 종료된다.

3. 프로비저닝 프로파일 인증서

개발하기 위해 필수적인 인증서.

이름부터 어렵게 느껴진다.

이 인증서가 있어야 앱을 테스트할 수 있고, 앱스토어에 앱을 등록할 수 있고, 앱을 빌드할 수 있다.

앱스토어에 앱을 올리지 않아도 되는 앱이라도, 아니 심지어 앱을 테스트하기 위해서도 필요한 인증서다.

도대체 로컬 환경에서 테스트 한 번만 해보겠다는데 왜 인증서가 필요한지 모르겠다.

애플의 큰 뜻이 있을 것이다.

4. Push 인증서

앱에서 Push 메시지를 받기 위한 인증서다.

Push [푸시]란, 아이폰 기기에 토스트 메시지를 띄워주는 기능이다.

Push 인증서가 만료되면 더 이상 Push를 받지 못한다고 “카더라”. 물론 경험해본 적은 없다.

그리고 Push만 받지 못하게 되는 것이지, 배포 인증서가 만료되지 않는 한 일반적인 앱 구동에는 지장이 없다는데 이것도 카더라라서 잘 모르겠다.

5. MDM Push 인증서

MDM 환경의 앱에서 Push 메시지를 받기 위한 인증서다.

MDM 환경이란 여기서 자세히 설명하긴 어렵고 그냥 모바일 기기가 통제되는 환경이다.

MDM 환경에서는 앱을 마음대로 설치할 수도 없고, 허가되지 않은 앱을 사용할 수도 없다.

MDM 환경에서 Push를 받으려면 기본 Push 인증서도 필요하고, MDM Push 인증서도 필요하다.

정말 놀라운 애플의 정책이 아닐 수 없다.

* 아직 궁금한 내용들

답을 아시는 분들은 댓글로 꼭 써주시길 바란다.

1) 배포 인증서가 만료되면 앱 구동이 더 이상 안되는 것인가, 아니면 이미 설치한 앱은 정상 구동 가능하고 새로 설치만 불가능해지는 것인가?

=> 2020/06/02 내용 추가. 배포 인증서가 만료되면 앱을 더 이상 사용할 수 없다. 앱 아이콘을 클릭해도 구동되지 않는다. 사용자 친화적인(user-friendly) 메시지는 나오지 않았고 그냥 잠깐 검은 화면이 나왔다가 종료된다.

2) 집에서 Xcode 및 objective-c 로 헬로 월드 프로그램을 짜서 테스트해봤을 때는 프로비저닝 프로파일 인증서가 필요없었다. 그런데 회사에 이미 존재하는 프로젝트 또는 타업체에서 전달받은 테스트 프로젝트 등은 한결같이 프로비저닝 프로파일 인증서가 필요했다. 어떤 조건 이후부터 프로비저닝 프로파일 인증서가 반드시 필요한 것인가?

=> 2021/04/08 내용 추가. 실제 디바이스에서 테스트를 할 경우 반드시 개발자 인증서가 필요하다고 한다. 하지만 에뮬레이터를 사용할 경우는 기본 인증서를 사용해도 구동된다고 한다.

3) CSR은 도대체 왜 필요한 것인가? 그냥 [인증서 발급 신청] -> [인증서 발급됨] 하면 되지 않을까?

=> 2020/06/02 내용 추가. CSR을 만들 때 (1) 기관명, (2) 이메일 주소를 넣게 되어 있는데, 이것이 인증서 정보의 기초가 된다. 그냥 1단계 인증서라고 생각하면 편한 것 같다. 또한 CSR은 (1) 기관명, (2) 이메일 주소가 동일한 조건이라면 계속 재사용할 수 있다.

4) CSR이 필요한 이유가 존재한다고 해도, 그러한 조건에서만 CSR 파일을 만들면 되는 것이지, [CSR 발급 신청] -> [CSR 발급됨] -> [CSR로 인증서 발급 신청] -> [인증서 발급됨] 이 과정이 진짜 합리적인가?

=> 2020/06/02 내용 추가. 항목 3번의 답변 참고할 것.

* 글을 마무리하며

애플 인증서에 대해 쓴 내용 중 틀린 내용도 있을 것이다.

틀린 내용은 댓글로 꼭 적어주시기 바란다.