티스토리 뷰

우선 코드 사이닝의 가장 중요한 개념은


 오직 애플만이 자신들의 하드웨어에서 어떤 소프트웨어가 동작하도록 허락할 수 있다.


실제로 매번 앱이 실행될 때마다 앱은 애플로부터 인증을 받았는지

즉, 앱을 실행할 수 있는 권한을 가지고 있는지 확인한다.





1. Apple 인증서


애플만이 앱을 실행할 권한을 가진다면, 개발자들은 어떻게 디바이스에서 테스트할 수 있을까?

해답은, 애플이 개발자를 신뢰하여 애플 대신 앱을 실행할 수 있는 권한을 부여받는다.


인증서의 역할은 개발자가 애플 대신 앱을 사인할 수 있는 권한을 가지게한다.


인증서는 "키체인 접근" 앱에서 만들 수 있는데, 여기서 Certificate Signing Request (CSR) 을 생성해야한다.


1. "키체인 접근" 앱은 공개키와 개인키를 자동으로 생성한다. 

 (이 키는 "키체인 접근" 앱의 "Key" 카테고리에서 확인할 수 있다.

 또한, 개발자가 누구인지 증명하는 키이므로, 키를 잃어버리면 더 이상 앱 스토어에 배포할 수 없다.)


2. 이 키를 이용하여 CSR 을 생성한다. 

이 파일은 개발자의 이름, 이메일, 공개키를 포함하고 있고 개인키를 이용하여 사인된다.

이 매커니즘으로 애플은 정말 사용자가 이 것을 만들었음을 알 수 있게 된다.


이 CSR 을 업로드하면 애플은 인증서를 발급해준다.

개발자는 이 인증서를 "키체인 접근" 앱에 추가할 수 있고 이는 "My Certificate" 카테고리에 추가된다.



2. Provisioning Profile


디바이스에서 앱을 실행하기 위해서는 내 디바이스가 

개발자를 신뢰할 수 있는지를 알아야

앱 설치를 허락할지 말지를 결정할 수 있다.

이 역할을 해주는 것이 Provisioning Profile 이다.


프로비저닝 프로파일은 iOS 디바이스들을 Apple 인증서와 연결하는 역할을 담당한다.

이 결과로 만들어진 *.mobileprovision 파일은 

iOS 앱을 컴파일하는 과정에서 사용되며

앱을 테스트하려고 하는 디바이스에 설치가 되어야한다.


프로피저닝 포탈에서 받은 프로피저닝 프로파일을 더블클릭하면

XCode 가 인식하고 자동으로 프로비저닝 프로파일 목록에 저장한다.


개발자는 복수의 프로비저닝 프로파일을 가질 수 있다.

하지만 프로비저닝 프로파일을 생성할 때 연동한 App Id 와

실제 컴파일하려는 앱에 설정된 bundle Id 가 일치해야하므로

결국은 각 프로젝트마다 하나의 프로비저닝 프로파일을 만들게된다.




3. 빌드 및 실행 과정


1) Ad-Hoc 배포


위 과정을 거치면 

1. 개발자를 증명하는 공개키와 비밀키

2. 애플이 인정해준 앱 서명 허락 인증서

3. 디바이스에 설치 가능한 프로비저닝 프로파일

총 3가지를 가지게 된다.


이 3가지를 이용하여 XCode 에서 빌드를 하면

.app 파일을 얻게되는데, .app 패키지 내부에는 2가지가 존재한다.


1. 실제 프로비저닝 프로파일 : 컴파일 시 사용된 프로비저닝 프로파일 파일이 복사된다.

2. "_CodeSignature" 폴더 : CodeResources 란 파일(.plist)을 담고 있고, 패키지에 있는 모든 파일의 암호화된 해쉬정보를 담고있다.


앱이 최종적으로 디바이스에 설치될 때


1. .app 에 포함된 프로비저닝 프로파일이 애플에서 서명된 것인지 확인

2. "CodeResources" 란 파일에 기록된 각 파일의 해쉬 정보를 실제의 파일들과 확인하여 빌드 후 수정이 되지 않았음을 확인

3. 디바이스에 .app 에 포함된 프로비저닝 프로파일이 있는지 확인


총 3가지 확인 후 실행된다.



2) Enterprise 배포


개발자의 회사가 많은 아이폰 유저들을 가진다고 하면, 

애플은 회사를 신뢰할 수 있는 충분한 이유가 있으므로

개발자에게 정말로 애플인 것처럼 개발한 앱들을 서명할 수 있는 인증서를 발급해준다.


따라서 이 인증서로 서명된 앱들은 따로 확인을 거치지 않고

모든 디바이스를 애플에 등록하지 않고도 개발된 앱을

디바이스에서 바로 실행할 수 있도록 해준다.



3) App Store 에 배포


Enterprise 배포와 비슷하지만 이 배포 과정에 포함되는 프로비저닝 프로파일은

빌드된 앱이 어떤 디바이스에서도 실행이 되지 않도록한다.

App Store 를 위해 빌드된 앱은 제출용도 말고는 어디서도 쓸 수 없다.


애플 측에 앱을 제출했을 때의 해당 앱은 개발자에 의해 이미 서명되었고

프로비저닝 파일을 가지고 있기 때문에 애플에 인증된 개발자가 제출한 앱임을 확인할 수 있다.

애플 측에서 앱 배포를 승인하면 애플에서 자신들의 서명을 다시함으로써 

모든 iOS 디바이스에서 실행될 수 있도록 해준다.




4. 출처


http://la-stranger.blogspot.kr/2014/04/ios.html?m=1

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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 31
글 보관함