허허.. 회사에서 iOS MDM 개발을 하라는 업무를 줘서 난데없이 MDM을 개발하게 되었다... (이땐 MDM이 뭔지도 몰랐다)
MDM이란?? Mobile Device Management 의 약자로, 쉽게 말해서 그냥 기기 관리 시스템?? 이라고 생각하면 된다.
MDM 개발하라는데... 진짜 정보가 없어서 눈물나는 와중에 그나마 찾아낸 정보들로 어렵게 개발을 하긴 했다..ㅋㅋㅋ
이 글을 작성하는 목적은 사람은 망각의 동물이라 하지 않던가... 나중에 내가 잊을 확률이 99.9% 이기 때문에 작성하기도 하고,
보편적으로 MDM 개발을 하는 경우는 드물지만, 나처럼 MDM 정보가 필요한 소수의(?) 사람들을 위해 작성한다.
아래는 내가 MDM 개발을 하며 참고했던 사이트들이다. 현재 작성중인 글을 읽고도 잘 안되신다면... 참고하시길..!
참고로 첫번째 사이트 내용대로 인증서 발급하려고 하면 안되더라..ㅋㅋㅋ 예전에 할때는 됐는데 지금은... 내가 잘못한걸 수도 있으니
판단은 각자의 몫으로!!
대신, 인증서 발급 내용 이외에 프로파일 생성하는 내용도 있으니 그건 참고할만 하다. (근데 그것도 뭔가 좀 이상함...)
https://projectjo.tistory.com/entry/MDM-Push-%EC%9D%B8%EC%A6%9D%EC%84%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0
iOS MDM 인증서 발급
먼저, 키체인 접근 > 인증서 지원 > 인증 기관에서 인증서 요청... 를 눌러 CSR을 발급받자.
사용자 이메일 주소에는 Apple Enterprise 계정 이메일을, 일반 이름엔 계정 이름?? 닉네임?? 을 넣는다.
Apple Developer 사이트에 가서 계정 로그인 후에 인증서 생성을 누르면 Services 하위에 MDM CSR 이라는 항목이 있다.
선택해서 MDM CSR을 발급 받으면 된다.
만약 Enterprise 계정인데 MDM CSR 항목이 보이지 않는다면,
devprograms@apple.com 또는 https://developer.apple.com/contact/topic/select 로 메일 또는 문의를 넣으면 된다.
MDM 인증서 발급을 위해 MDM CSR 을 발급받으려 하는데, 해당 항목이 비활성화 되어 있다 이런식으로 넣으면 된다고 한다..
우리 회사 계정에선 이미 열려있어서 나는 따로 연락은 하지 않았다. 다른 사람들의 글을 보면 보통 1시간 ~ 하루 이내에 열어준다고 한다.
방금 생성한 CSR 파일을 넣어서 MDM CSR을 발급 받자.
중요한 점!! 사용한 CSR 파일은 고이 잘 모셔놓자.. 나중에 또 써야된다.
이제 MDM CSR을 정상적으로 발급 받았으면 MDM CSR 항목을 선택하는 화면이 있던 곳으로 이동한다.
아래로 스크롤 해보면 위의 사진과 같이 Worldwide Developer Relations Certificate ~ 인증서를 받을 수 있는데,
나는 여기서 이왕 받는거 기간이 긴걸 받아야지 라는 생각으로 02/20/2030 이 만료일인 인증서로 받았다.
다음은 Apple의 공용 인증서들이 모여있는 https://www.apple.com/certificateauthority/ 이곳으로 이동한다.
Apple Root Cerificates 하위 항목 중 Apple Inc. Root Certificate 를 클릭해서 다운받는다!
Apple Developer 사이트에서 발급받은 MDM CSR 을 키체인에 등록 후 검색창에 MDM Vendor 라고 검색하면 위의 사진처럼 인증서가 나온다.
여기서 인증서의 개인 키만 내보내기 하면 되는데, 내보내기 할 때 입력하는 암호는 당연하지만 외우거나 따로 기록해놓자.
내보내기 할 때 사용한 파일명은 vendor.p12 이니, 이후 내용에서 헷갈리지 마시길...!
지금까지 발급, 저장했던 항목들을 모아놓으면 위의 사진처럼 총 5개가 있어야 한다.
아 그리고, 고이 모셔놓으라 했던 MDM CSR 파일을 발급 받을 때 사용한 CSR 파일은 customer.cer 로 파일을 바꿔준다.
이때, 이름이 customer.cer 로만 변경되는 경우가 있는데 확실히 확장자가 cer로 변경되어야 한다.
제대로 변경된건지 잘 모르겠다면, customer.cer 우클릭 해서 정보 가져오기 를 클릭하면 사진처럼 파일 정보가 보이는데,
여기서 이름 및 확장자 항목을 보면 위의 사진처럼 변경되어 있어야 한다. 안 되어있다면 바꿔주자!
파일이 정상적으로 다 있다 가정하고... 터미널을 켜서 저 파일들이 모여 있는 경로로 이동 후 아래의 커맨드들을 입력해주자.
openssl x509 -inform der -in mdm.cer -out mdm.pem
openssl x509 -inform der -in AppleIncRootCertificate.cer -out root.pem
openssl x509 -inform der -in AppleWWDRCAG3.cer -out intermediate.pem
openssl req -inform pem -outform der -in customer.cer -out customer.der
정상적으로 커맨드 실행 후 생성된 파일들과 vendor.p12 파일을 한 곳에 모으면 위의 사진과 같이 파일이 있다.
이 5개의 파일들을 하나로 만드는 작업을 해야 하는데, 우리 Eclipse 의 도움이 필요하다..ㅎㅎ
http://www.softhinker.com/in-the-news/iosmdmvendorcsrsigning/ 링크로 가서 Java 소스를 받는다.
사이트에서 받아야 하는 소스를 첨부 해놓긴 했는데, 신뢰가 안가신다면 뭐.... 직접 다운 받으시면 됩니당
위의 사진에 보면 나오는 ↓ 요 화살표 버튼을 클릭해주면 소스가 다운로드 된다. (사이트 하단에 있으니 잘 찾아보세욤ㅋㅋ)
근데 저 파일을 받아서 보면 .project 파일이 없어서 아래 링크의 방법대로 Eclipse에 import 해야 하는데,
감사하게도, 위쪽의 내가 참고했다는 사이트의 두 번째 링크로 들어가보면 프로젝트를 바로 import 할 수 있게 convert 해 놓으셨다!!!
Project Jo 님이 첨부하신 파일을 기준으로, 위의 파일을 압축해제 하고
Eclipse > File > Import > Existing Projects into Workspace > 압축해제 된 폴더 지정 > Finish 하면, Import 가 완료된다.
Import 된 프로젝트의 Test.java 파일을 열어보면 코드들이 적혀있는데 우리가 봐야 할 부분은 extractPrivateKey 함수를 보면 된다.
코드를 보면 alias 와 password 변수가 있는데 alias 에는 Vendor.p12의 Key Name, password 에는 Vendor.p12 를 내보내기 할 때
입력한 암호를 입력해주면 된다.
하... 여기서 진행할 때 Key Name에 Vendor.p12를 입력해서 Run 할 때마다 오류나는 경험을 했는데, Key Name에는 파일명인 Vendor.p12가 아니라 키체인에서 개인 키를 내보낼 때 사진에 보이는 개인 키의 이름이 Key Name 이다...ㅋㅋㅋ
현재 나를 예로 들면, Key Name은 Group Mobile 이 되겠다.
아니면 Terminal 에서도 확인해볼 수 있는데, Vendor.p12 파일이 있는 경로로 이동 후에, 아래 커맨드를 입력해주면!
keytool -list -keystore vendor.p12 -storeType PKCS12
사진처럼 날짜 좌측에 Key Name이 뜹니다! 이걸 몰라서.. 2시간은 삽질을 한듯😅
다시 본론으로 돌아오면, Key Name과 Key Password 를 변수에 잘 입력해주고, 한번 빌드하면 프로젝트 폴더안에 bin 폴더가 생긴다.
안으로 안으로 따라 들어가서 사진에 나온것처럼 Test.class 가 있는 레벨에 우리가 준비한 5개의 파일들을 넣어준다.
그리고 프로젝트로 돌아가서 Run 해 준다. 정상적으로 실행이 되면..!!
요런, 파일들이 생성되는데 여기서 우리에게 필요한 파일은 plist_encoded 파일이다.
https://identity.apple.com/pushcert/ 로 이동해서,
Create a Certificate 를 클릭해서,
파일 선택 > plist_encoded 첨부 > Upload 를 클릭하면...!
해당 인증서를 다운로드 받고 키체인에 등록해주고, 키체인에서 검색창에 APSP 라고 검색해주면 뜨는 인증서가 MDM 인증서다!!
사실 처음에 MDM 인증서를 발급받을때 위의 방법대로 하지 않고, 글 초반에 내가 참고했다고 한 사이트 중 한 곳인
이곳의 내용을 보고 MDM 인증서를 발급 했었는데 2021.02.25 일 기준으로 생성한 파일을 첨부해서 Upload 했더니
정상적으로 Sign 되지 않았다는 내용과 함께 MDM 인증서 발급이 안됐다... 내가 잘못한 거 일수도 있는데 아마 안되는 것 같다.
나처럼 시행착오를 겪는 이가 없길 바라며... 글이 길어져서 MDM 프로파일 생성은 2편에서 진행해야겠다!