پروسه ساین اپلیکیشن iOS

این دفعه میم نذاشتم
این دفعه میم نذاشتم


من معمولا از ویرگول برای یادداشت‌های خودم استفاده میکنم یه جورایی و این هم یه یادداشته :)) از بس که حافظه‌ام ضعیفه :)) پس احتمال ۹۹ درصد به دردتون نمیخوره.

اگه بخوام بگم mobileprovision و p12 یه جورایی حیاتی‌تر از entitlement هستن.

ما با یک private key و public key سر و کار داریم
private key میشه گفت signature عه که اپلیکیشن unsigned ایی که داریم باهاش sign میشه.
public key یه جورایی signature checker محسوب میشه و باهاش اپلیکیشن verify میشه.




خب این دوتا key از کجا میان؟ چی هستن اصلا؟

وقتی شما CSR میکنی به اپل (که Public Key هم شاملش هست)، اطلاعات شخصی و ... ساین میشه توسط Private Key، بعد اپل از Public key توی CSR استفاده میکنه تا بفهمه CSR ایی که میاد از سمت تو هست یا نه (قبل از این که certificate رو براتون صادر کنه که شامل Public Key هست)

حالا از اپل دوتا کادوی ناقابل داریم:

  • یک فایل certificate که شامل Public Key عه
  • و Private Key

حالا فایل p12 اینجا وارد عمل میشه و Private Key رو به همراه Certificate تبدیل به یه بسته میکنه و به یه فایل تبدیلشون میکنه.



حالا وقتی اپلیکیشن ساین میشه فایل P12 از اپلیکیشن جدا میشه.

چون Private key فقط برای ساین کردن اپلیکیشن هاست، درحالی که Certificate اومده embed شده توی اپلیکیشن که حالا به کمک Public key دیوایس میتونه تشخیص بده اپلیکیشن معتبره یا نه.



حالا نقش Provision profile چیه؟ این یه جورایی Permission policy عه که اجازه میده دستگاه های خاصی، اپلیکیشن های خاصی رو اجرا کنن و دو نوع داره: Ad hoc و AppStore

توی اد هاک این پروفایل اجازه میده اپتو به تستر بدی و و گارانتی میشه که فقط و فقط شخص تعیین شده میتونه اپ رو verify و ران کنه. یعنی حتی اگه اپ به بیرون درز کنه و به اصطلاح Leak شه نمیتونه با اون امضا و پروفایل روی دیوایس دیگه ای ران شه.



پروفایل شامل چیه؟ پروفایل برای کار کردن دو تا چیز لازمه که داشته باشه:

  • App ID

اپلیکیشن آیدی همون باندل هست که اپ ها رو از هم جدا و تفکیک میکنه و معمولا ریورس یه دامین هست مثل com.x.y


  • Device ID

دیوایس آیدی همون UDID هست که یک چیزی مثل سریال نامبر دیوایس شماست که دیوایس شما رو از بقیه تفکیک میکنه

با این دوتا اطلاعات پروفایل کارش راه میفته و میتونه اجازه بده که چه دیوایس هایی با چه اپ هایی کار کنن.

فایل Entitlements هم چیز سختی نیست، یک Plist عه که میتونی با مشخص کردن پراپرتی‌هاش فیچر های اپلیکیشن‌ رو تعیین کنی