Firma de código y aprovisionamiento en iOS en pocas palabras

Estoy desarrollando Apps desde hace más de 3 años y 1 cosa que me sigue molestando es la firma de código y el aprovisionamiento en iOS. ¿Qué son las Identidades de Firma? Por qué tengo que crear Provisioning Profiles y preocuparme de esas cosas como desarrollador? Si no tienes ninguna buena respuesta a estas preguntas y no quieres leer los documentos de Apple, este es el artículo que expone todo el proceso para ti y para mí como referencia en menos de 5 minutos.

Estoy seguro de que muchos de vosotros podéis aprender cosas rápidamente simplemente leyendo un texto, pero lo que realmente me gusta es que las cosas se expliquen de forma visual con cajas y flechas. Así que el mayor problema para mí es que no hay ningún cuadro o gráfico que recoja todas las partes relevantes y muestre cómo funciona todo junto de una manera fácil de entender. Esta es la razón por la que intentaré crear uno al final de este Post. Vamos a empezar.

Primero, vamos a recoger los principales términos, se tropezará con cuando se trata de encontrar cualquier cosa relacionada con el aprovisionamiento y la firma de código en Internet.

  • Xcode
  • Centro de Miembros
  • Keychain
  • Signing Identity
  • Private &Public Key
  • Provisioning Profile
  • App ID

Xcode &Centro de Miembros

Si eres un desarrollador de iOS normalmente utilizarás Xcode para crear y gestionar tu aplicación y recursos y subirlos a la Appstore. Esto es todo lo que necesitas saber sobre Xcode para seguir a lo largo de este Post. si quieres leer más sobre él haz clic aquí: Xcode

Después de registrarte en el Programa de Desarrolladores de Apple podrás acceder al Centro de Miembros. Este es el lugar donde puedes crear Perfiles de Aprovisionamiento, App IDs, Certificados, etc. Algunas partes del Centro de Miembros están directamente conectadas con Xcode. Por ejemplo, puedes ver y crear tus Identidades de Firma o descargar y actualizar Perfiles de Aprovisionamiento en tus Ajustes de Xcode.

Identidad de Firma, Clave Pública &Privada, Aplicación de Llavero

Una cosa que tenemos que aclarar es el término Firma. Firmar tu aplicación permite a iOS identificar quién firmó tu aplicación y verificar que tu aplicación no ha sido modificada desde que la firmaste. La identidad de firma consiste en un par de claves públicas y privadas que Apple crea para ti. Piensa en la clave pública como un mecanismo de bloqueo, por lo que necesitas conocer la clave privada para desenvolver, desbloquear o decodificar los datos de nuevo.

¿De dónde viene el par de claves pública y privada y cómo se solicita un certificado que las contenga? Toda esta magia ocurre cuando se crea una solicitud de firma de certificado (CSR) a través de la aplicación de acceso al llavero. Si lo haces, la aplicación de llavero creará una clave privada y un archivo certSigningRequest que luego subirás a Apple. Apple comprobará la solicitud y emitirá un certificado para usted. El certificado contendrá la clave pública que puede descargarse en su sistema. Una vez que lo hayas descargado, tienes que ponerlo en tu aplicación de acceso al llavero haciendo doble clic en él. Es utilizado por las funciones criptográficas para generar una firma única para su aplicación, que es básicamente su Identidad de Firma de Código.

El certificado también estará disponible a través del Centro de Miembros, pero sólo contendrá la clave pública, por lo que mantener esa clave privada segura.

También se requiere un certificado intermedio para estar en su llavero para asegurar que su certificado de desarrollador o de distribución es emitido por otra autoridad de certificación. Sé que suena un poco confuso, pero así es como funciona. Se instala automáticamente al configurar Xcode la primera vez, así que básicamente no hay que preocuparse mucho por ello porque se configura automáticamente.

Provisioning Profile & App ID

Como sabemos, a Apple le gusta mantener las cosas seguras, por lo que no es posible instalar una App en cualquier dispositivo iOS que haya por ahí utilizando sólo el certificado. Aquí es donde entran en juego los Provisioning Profiles. Se debe instalar un Provisioning Profile en cada dispositivo en el que deba ejecutarse el código de su aplicación. Cada perfil de aprovisionamiento de desarrollo contendrá un conjunto de certificados de desarrollo de iPhone, identificadores de dispositivo únicos y un ID de aplicación. Un ID de aplicación es una cadena de dos partes que se utiliza para identificar una o más aplicaciones de un mismo equipo de desarrollo.

Los dispositivos especificados en el perfil de aprovisionamiento de desarrollo sólo pueden ser utilizados para realizar pruebas por aquellas personas cuyos certificados de desarrollo estén incluidos en el perfil. Un solo dispositivo puede contener varios perfiles de aprovisionamiento. La diferencia entre los perfiles de desarrollo y de distribución es que los perfiles de distribución no especifican ningún ID de dispositivo. Si quieres lanzar una App que debe estar limitada a un número de dispositivos registrados, necesitas usar un perfil Ad-Hoc para ello.

Cuadro

Aquí tienes el Cuadro que se me ocurrió. Si descubres alguna cosa que se me haya pasado por alto o que esté mal explicada, por favor, házmelo saber. Como se dice, esta es la primera vez que realmente traté de envolver mi cabeza alrededor de las entrañas de Provisioning y Code Signing. Sé que hay mucho más que hablar, pero creo que este es un buen comienzo para todo lo relacionado con este tema. Intentaré mantener este post actualizado y arreglar todo lo que esté mal tan rápido como pueda.

  1. Se instalará Xcode y se empujará el Certificado Intermedio al Llavero
  2. Se creará la Solicitud de Firma de Certificado (CSR).
  3. La clave privada se generará junto con la creación de la CSR y se almacenará en el Llavero
  4. La CSR se subirá al Centro de Miembros
  5. Apple lo comprobará todo y emitirá el Certificado
  6. El Certificado se descargará en el Ordenador
  7. El Certificado se empujará al Llavero y se emparejará con la clave privada para formar la Identidad de Firma de Código
  8. El Perfil de Aprovisionamiento se creará utilizando un Certificado, App ID y Device Identifiers y descargado por Xcode
  9. Xcode firmará la App y empujará Provisioning Profiles en el Device
  10. iOS probará si todo está correctamente configurado.Esto significa que el perfil de aprovisionamiento debe incluir el certificado que utilizó para firmar la aplicación, el UDID de su dispositivo y el ID correcto de la aplicación.
  11. ¡Su aplicación debería ejecutarse ahora!

Deja una respuesta

Tu dirección de correo electrónico no será publicada.