Clarificación de firma de código de IO

Según tengo entendido, existen cuatro forms posibles de distribuir aplicaciones en IO:

  1. Desarrollo
  2. Ad hoc
  3. Empresa
  4. Tienda de aplicaciones

Entiendo cómo funciona el desarrollo de la distribución. Debe enviar una request de certificate a Apple y le emite un certificate. Luego usa este certificate para firmar sus aplicaciones.

Sin embargo, no está claro cómo funcionan los certificates Ad Hoc, Entreprise y App Store. En particular:

  • Ad Hoc se puede instalar en una amplia gama de divisiones, sin embargo, no necesita especificar los dispositivos en los perfiles de aprovisionamiento. ¿Necesita enviar una request especial para get un certificate Ad Hoc y cómo funciona el cumplimiento del nivel de dispositivo?
  • Del mismo modo, según entiendo, el certificate Enterprise se puede usar para
    instale aplicaciones en un dispositivo diferente (no necesita especificarlas por adelantado). Parece que Enterprise es muy similar a la App Store.
    certificate, es decir, no veo la diferencia entre ellos. ¿Cómo funciona la verificación de security de los certificates para Enterprise?

Mi intuición de que Apple funciona como una Autoridad de certificación, pero firma todos estos types de certificates con certificates raíz diferentes, es decir, las requestes de desarrollador están firmadas con el certificate raíz Apple Developer y Enterprise con el certificate raíz Apple Enterprise. Luego, durante la installation en el dispositivo, se verifica el tipo de certificate raíz y se aplica la decisión correspondiente. ¿Estoy bien?

La respuesta radica en los perfiles de aprovisionamiento y no en los certificates o sus autoridades.

No hay tal cosa como un certificate Ad Hoc. Solo hay certificates de distribución y certificates de desarrollo. Esto es cierto también para las counts Enterprise, cuyos certificates son exactamente iguales (aparte de la count del tipo de procedencia). Entonces, Ad Hoc, App Store y Enterprise son todos certificates de distribución. Todos sus certificates están firmados por la misma autoridad: la Autoridad de Certificación de Relaciones con Desarrolladores de Apple Worldwide, y como tal, no pueden tener diferentes CA raíz.

Las diferencias se encuentran en los perfiles de aprovisionamiento en sí mismos, que son simplemente plists firmadas por Apple. iDevices confía en alguna parte de la cadena de certificates WWDR (la CA raíz) y, si la firma finaliza, el perfil de suministro se interpreta y se toma una decisión sobre si una aplicación determinada se puede instalar o ejecutar.

Los perfiles de aprovisionamiento dicen quién puede ejecutar qué y en qué dispositivos. Están suscritos por Apple para que un dispositivo pueda verificar lo que dicen.

Las diferencias entre los types de perfil que puedo ver son:

Los perfiles empresariales tienen

<key>ProvisionsAllDevices</key> <true/> 

Los ad hoc tienen

 <key>ProvisionedDevices</key> <array> UDIDs! You do, in fact, need to specify them for Ad Hoc! </array> 

Y los perfiles de App Store parecen no tener información especial de aprovisionamiento. De hecho, no estoy seguro de que realmente se instalen en un dispositivo.

El command security cms -D -i your.mobileprovision es útil para explorar perfiles de aprovisionamiento.

Un diagtwig de Venn que creé para simplificar la comprensión de los perfiles de aprovisionamiento de iOS. Un diagrama de Venn que creé para simplificar la comprensión de los perfiles de aprovisionamiento de iOS. Consulte el documento de dibujo de Google aquí: https://docs.google.com/drawings/d/1Td19Lf94Lep3h7jFD2mYdO564Y_LiWBaFaartDE8riU/edit?usp=sharing