๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
iOS ๐ŸŽ/iOS

iOS Code Signing

by yongmin.Lee 2021. 6. 25.

Code Signing

  • ์• ํ”Œ ๊ธฐ๋ณธ ์›์น™ : ์• ํ”Œ(Apple)๋งŒ์ด ์ž์‹ ๋“ค์˜ ํ•˜๋“œ์›จ์–ด(iOS)์— ์–ด๋–ค ์†Œํ”„ํŠธ์›จ์–ด(์•ฑ)๊ฐ€ ๋™์ž‘ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค
  • ์œ„์˜ ๊ธฐ๋ณธ ์›์น™์„ ์ง€ํ‚ค๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ์• ํ”Œ๋กœ ๋ถ€ํ„ฐ ์Šน์ธ์„ ๋ฐ›๊ณ , ์•ฑ์„ ๊ฐœ๋ฐœํ•˜์—ฌ ์•ฑ์Šคํ† ์–ด ๋“ฑ๋ก์„ ์œ„ํ•ด ์• ํ”Œ์— ์ œ์ถœํ•˜๊ณ ,
    ์ตœ์ข…์ ์œผ๋กœ ์• ํ”Œ์ด ์•ฑ์„ ์Šน์ธํ•จ์œผ๋กœ์จ ์• ํ”Œ์˜ ์›์น™์ด ์ง€์ผœ์ง€๋„๋ก ํ•œ๋‹ค.
  • Code Signing  :  ์• ํ”Œ์˜ ๊ธฐ๋ณธ ์›์น™์„ ์ง€ํ‚ค๊ธฐ ์œ„ํ•ด Certificate๋ฅผ ๋ฐœ๊ธ‰๋ฐ›๊ณ  AppID์™€ Device๋ฅผ ๋“ฑ๋กํ•˜๋ฉฐ ์ด ๋ชจ๋“  ์ •๋ณด๋“ค์„ ๋‹ด๊ณ ์žˆ๋Š” Provisioning Profile์„ ๋งŒ๋“ค๊ณ  ๋“ฑ๋ก์‹œํ‚ค๋Š” ์ผ๋ จ์˜ ๋ชจ๋“  ๊ณผ์ •

 

Code Signing Process

  1. Certificates ์ƒ์„ฑ ๋ฐ ์‹คํ–‰ํ•˜์—ฌ xcode์— ๋“ฑ๋ก
  2. AppID ๋“ฑ๋ก
  3. Device ๋“ฑ๋ก
  4. Provisioning Profiles ๋“ฑ๋ก

 

1. Certificates ์ƒ์„ฑ ๋ฐ ์‹คํ–‰ํ•˜์—ฌ xcode์— ๋“ฑ๋ก

  • Apple Certificate : ์• ํ”Œ์ด ๊ฐœ๋ฐœ์ž๋ฅผ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ณด์ฆ์„œ
  • Apple Developer์— ๊ฐ€์ž…ํ•˜๊ณ , ๊ฐœ๋ฐœ์ž ์„ผํ„ฐ์—์„œ ์ธ์ฆ์„œ๋ฅผ ๋ฐ›์•„์•ผ ๋น„๋กœ์†Œ Apple์˜ ์‹ ๋ขฐ๋ฅผ ์–ป๋Š”๋‹ค. ์‹ ๋ขฐ๋ฅผ ์–ป์€ ๊ฐœ๋ฐœ์ž์— ํ•œํ•ด ์ž์‹ ์ด ๋งŒ๋“  ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ Apple์ด ๋งŒ๋“  ๊ธฐ๊ณ„์—์„œ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค
  • Apple Certificate ๋ฐœ๊ธ‰ ํ”„๋กœ์„ธ์Šค
    • keychain์—์„œ CSR(CertificateSigningRequest) ์ƒ์„ฑ
      • ํ‚ค์ฒด์ธ ์•ฑ์€ ๊ณต๊ฐœํ‚ค์™€ ๊ฐœ์ธํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์—ญํ• 
      • CSR ํŒŒ์ผ์€ ์ธ์ฆ์ž์˜ ์ด๋ฆ„, ์ด๋ฉ”์ผ, ๊ณต๊ฐœํ‚ค๋ฅผ ํฌํ•จํ•˜๋ฉฐ ๊ฐœ์ธํ‚ค๋ฅผ ํ†ตํ•ด sign ๋œ๋‹ค
    • Apple developer์—์„œ Certificates ์„ ํƒํ›„ CSR์„ ์—…๋กœ๋“œํ•˜์—ฌ Apple Certificate ๋ฐœ๊ธ‰ ๋ฐ ๋‹ค์šด๋กœ๋“œ
    • ๋‹ค์šด๋ฐ›์€ Certificate๋ฅผ keychain์— ๋“ฑ๋ก
    • Certificate์™€ xcode ํ”„๋กœ์ ํŠธ ์—ฐ๋™

 

2. AppID ๋“ฑ๋ก

  • AppID๋ž€ ์• ํ”Œ์—์„œ ์•ฑ์„ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ตฌ๋ถ„์ž
  • AppID ํ™•์ธ = Xcode์—์„œ Bundle ID  ํ™•์ธ
  • AppID ๋“ฑ๋ก ํ”„๋กœ์„ธ์Šค
    • Apple developer์—์„œ Identifiers ์„ ํƒ 
    • App ID ๋“ฑ๋ก. ์ด๋•Œ, ์•ฑ์˜ ์ƒ์„ธ๊ธฐ๋Šฅ๋“ค(Push Notification, ๊ฒฐ์ œ, ...)์„ ์ฒดํฌ ํ•ด์ค€๋‹ค

 

3. Device ๋“ฑ๋ก

  • Device๋“ฑ๋ก์ด๋ž€ ํ…Œ์ŠคํŠธ ํ•ด๋ณผ ๋‹จ๋ง๊ธฐ์˜ UDID๋ฅผ ๋“ฑ๋กํ•˜๋Š” ๊ฒƒ 
  • UDID ํ™•์ธ = ํ…Œ์ŠคํŠธ ํ•  device๋ฅผ ๋งฅ๋ถ์— ์—ฐ๊ฒฐ -> Xcode -> Window -> Devices and Simulators -> Identifier 
  • Device ๋“ฑ๋ก ํ”„๋กœ์„ธ์Šค
    • Apple developer ํ™ˆํŽ˜์ด์ง€์—์„œ Devices ์„ ํƒ
    • UDID ๋“ฑ๋ก

 

4. Provisioning Profiles ๋“ฑ๋ก

  • Provisioning Profile์€ ์•ฑ์„ ์•ฑ์Šคํ† ์–ด or ํ…Œ์ŠคํŠธ ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•ด "Certificate, AppID, Devices ๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ์€ ๊ฒƒ"
  • ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‹คํ–‰์‹œํ‚ฌ ๋””๋ฐ”์ด์Šค๊ฐ€ ๋‚˜๋ฅผ ์‹ ๋ขฐํ•˜๋ƒ ์•ˆํ•˜๋ƒ์— ๋”ฐ๋ผ์„œ ์•ฑ ์„ค์น˜ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ • ํ•˜๋Š”๋ฐ, ์•ฑ์„ ๋””๋ฐ”์ด์Šค์— ์ปดํŒŒ์ผํ•˜๋ฉด provisioning profile์„ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ ๊ฐœ๋ฐœ์ž ํŽ˜์ด์ง€์— ๋“ฑ๋กํ•œ "AppID"์™€ ์‹ค์ œ ์ปดํŒŒ์ผํ•˜๋ ค๋Š” ์•ฑ์— ์„ค์ •๋œ Bundle ID๊ฐ€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  "๋””๋ฐ”์ด์Šค"๊ฐ€  "๊ฐœ๋ฐœ์ž"๋ฅผ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  • ๋งŒ์ผ ํ”„๋กœ๋น„์ €๋‹ ํ”„๋กœํŒŒ์ผ์˜ ์ •๋ณด๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ์•ฑ์€ ์ ˆ๋Œ€ ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค.
  • Provisioning Profile ๋“ฑ๋ก ํ”„๋กœ์„ธ์Šค
    • Apple developer ํ™ˆํŽ˜์ด์ง€์—์„œ Profiles ์„ ํƒ
    • ๊ฐœ๋ฐœ์šฉ ๋˜๋Š” ๋ฐฐํฌ์šฉ ์„ ํƒ
      • ๊ฐœ๋ฐœ์šฉ : ์•ฑ์ด ์‹คํ–‰๋  ๋””๋ฐ”์ด์Šค๋“ค์„ ์„ ํƒ ํ•ด์•ผํ•œ๋‹ค
      • ๋ฐฐํฌ์šฉ : ์•ฑ์ด ์–ด๋–ค ๋””๋ฐ”์ด์Šค์—์„œ๋„ ์‹คํ–‰์ด ๋˜์ง€ ์•Š๋„๋ก ํ•˜์—ฌ ์•ฑ์Šคํ† ์–ด๋ฅผ ์œ„ํ•ด ๋นŒ๋“œ๋œ ์•ฑ์€ ์•ฑ์Šคํ† ์–ด ์ œ์ถœ ์šฉ๋„ ๋ง๊ณ ๋Š” ์–ด๋””์—์„œ๋“  ์“ธ ์ˆ˜๊ฐ€ ์—†๋„๋กํ•œ๋‹ค. ์• ํ”Œ์ธก์— ์•ฑ์ด ์ œ์ถœ๋˜์—ˆ์„๋•Œ๋Š” ์ด ์•ฑ์€ ๋‚˜(๊ฐœ๋ฐœ์ž)์— ์˜ํ•ด ์ด๋ฏธ ์„œ๋ช…๋˜์—ˆ๊ณ , ํ”„๋กœ๋น„์ €๋‹ ํŒŒ์ผ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์• ํ”Œ์— ์ธ์ฆ๋œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ œ์ถœํ•œ ์•ฑ์ž„์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์• ํ”Œ์ธก์—์„œ ์ด ์•ฑ์„ ์Šน์ธํ•˜๋ฉด ์• ํ”Œ์—์„œ ์ž์‹ ๋“ค์˜ ์„œ๋ช…์„ ๋‹ค์‹œ ํ•จ์œผ๋กœ์จ ์ด ์„ธ์ƒ์˜ ๋ชจ๋“  iOS ๋””๋ฐ”์ด์Šค์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.
    • AppID, Ceriticate ์„ ํƒ, ๊ฐœ๋ฐœ์šฉ์ธ๊ฒฝ์šฐ Devices๋„ ์„ ํƒ
    • Provisioning Profile ๋ฐœ๊ธ‰ ๋ฐ ๋‹ค์šด๋กœ๋“œ
    • Xcode์—์„œ Automatically manage signing ํ•ด์ œํ›„ ์œ„์—์„œ ๋ฐ›์€ Provisioning Profile๋ฅผ import ํ•ด์ค€๋‹ค. ์ดํ›„ ๋‹ค์‹œ Automatically manage signing ์ฒดํฌํ•ด์ฃผ๋ฉด xcode๊ฐ€ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•ด์ค€๋‹ค

 

 

 

 

 

์ฐธ๊ณ 

 

https://hyunndyblog.tistory.com/150?category=1003461 

https://hsdev.tistory.com/entry/iOS-%EC%95%B1-%EB%B0%B0%ED%8F%AC-1-2-Certificates-%EC%9D%B8%EC%A6%9D%EC%84%9C-%EC%83%9D%EC%84%B1%ED%95%98%EA%B8%B0

https://zeddios.tistory.com/392

https://ios-development.tistory.com/246?category=936128

https://real-dongsoo7.tistory.com/144

 

.

 

 

 

'iOS ๐ŸŽ > iOS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Responder chain (1)  (0) 2021.12.06
[Objective-C] atomic vs nonatomic  (0) 2021.12.06
RxSwift  (0) 2021.05.18
RxSwift : ๋“ค์–ด๊ฐ€๊ธฐ์— ์•ž์„œ  (0) 2021.05.16
viewcontroller๊ฐ„ ๋ฐ์ดํ„ฐ ์ „๋‹ฌํ•˜๋Š” 6๊ฐ€์ง€ ๋ฐฉ๋ฒ•  (0) 2021.03.02