¿Qué es un perfil de aprovisionamiento y firma de código en iOS?

Fuente: Stackoverflow e internet 🤓.

Definición de Apple: Un perfil de aprovisionamiento es una colección de entidades digitales que vincula de forma exclusiva a los desarrolladores y dispositivos con un Equipo de Desarrollo de iPhone autorizado y permite utilizar un dispositivo para realizar pruebas.

A diferencia de Android, no se puede instalar cualquier app en un dispositivo iOS. Primero tiene que ser firmada por Apple. Sin embargo, cuando estás desarrollando una app, probablemente quieras probarla antes de enviarla a Apple para su aprobación. El perfil de aprovisionamiento actúa como enlace entre el dispositivo y la cuenta de desarrollador. Durante el desarrollo, usted elige qué dispositivos pueden ejecutar su aplicación y a qué servicios de la misma puede acceder. Un perfil de aprovisionamiento se descarga desde su cuenta de desarrollador y se incrusta en el paquete de aplicaciones, y todo el paquete está firmado por código. Debe instalarse un perfil de aprovisionamiento de desarrollo en cada dispositivo en el que desee ejecutar el código de su aplicación. Si la información del perfil de aprovisionamiento no coincide con ciertos criterios, tu app no se lanzará.

Cada perfil de aprovisionamiento de desarrollo contendrá:

  • Certificados de desarrollo – certificado de desarrollo. Son para los desarrolladores que quieren probar la app en un dispositivo físico mientras escriben el código.
  • Identificadores de dispositivos únicos (lista de dispositivos en los que la app puede ejecutarse)
  • Un ID de App (puede incluir un comodín * para ser utilizado para muchas aplicaciones con identificadores de paquetes similares). – Un ID de aplicación es una cadena de dos partes que se utiliza para identificar una o más aplicaciones de un único equipo de desarrollo.
  • Los dispositivos especificados dentro del perfil de aprovisionamiento solo pueden ser utilizados para realizar pruebas por aquellas personas cuyos certificados de desarrollo de iPhone estén incluidos en el perfil. A single device can contain multiple provisioning profiles.

    So, What is happening when we connect the device to xcode and installs the app??

    When you install the application on a device the following things happens:

    • the provisioning profile in the Mac goes to the developer certificate in your key chain.
    • xcode uses the certificate to sign the code.
    • device’s UUID is matched with the IDs in the provisioning profile.
    • AppID in the provisioning profile is matched with the bundle identifier in the app.
    • The entitlements required are associated with the App ID.
    • The private key used to sign the app matches the public key in the certificate.

    Here is a screenshot from xcode signing section:

    SO, de la imagen anterior, se puede ver que el AppID se comprueba, el certificado se valida, el equipo se empareja, las capacidades y los derechos se emparejan .

    Si todos los pasos anteriores tienen éxito, el binario firmado se envía al dispositivo y se valida contra el mismo perfil de aprovisionamiento en la aplicación y finalmente se lanza. Si cualquiera de estas condiciones falla, entonces la app no se instalará – y verás un icono de app en gris.

    La diferencia entre los perfiles de desarrollo y los de distribución es que los perfiles de distribución no especifican ningún ID de dispositivo. Si desea lanzar una aplicación que debe limitarse a un número de dispositivos registrados, debe utilizar un perfil Ad-Hoc para ello.

    Los perfiles de distribución se utilizan para enviar la aplicación a la App Store para su distribución. Después de que la app sea revisada por apple, ellos firman la app con su propia firma que puede ejecutarse en cualquier dispositivo.

    Eso está muy bien, pero ¿qué es la firma de código?

    Firmar tu app permite a iOS identificar quién firmó tu app y verificar que tu app 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.

    Criptografía asimétrica

    La criptografía asimétrica utiliza una clave pública y una clave privada. Los usuarios tienen que guardar su clave privada para sí mismos, pero pueden compartir la clave pública. Y utilizando esas claves pública y privada, un usuario puede demostrar que es realmente él mismo.

    ¿Cómo funciona la criptografía asimétrica?

    Supongamos que hay un UsuarioA y un UsuarioB .

    • El UsuarioA crea una PrivateKeyA + PublicKeyA.
    • El usuarioB crea una PrivateKeyB + PublicKeyB.
      • Para asegurar la comunicación entre el UsuarioA y el UsuarioB,

        • El UsuarioA comparte su PublicKeyA con el UsuarioB .
        • UserB shares his PublicKeyB with UserA.

        … and both users keep the private key with themselves.

        When UserA sends a message to UserB,

        • UserA encrypts the message with UserB’s PublicKeyB and send the message.
        • This message can only be decrypted using UserB’s PrivateKeyB.

        … The same thing happens when the UserB sends a message to UserA.

        Watch this video for more understanding about asymmetric cryptography : Youtube video by savjee.

        What is CSR(Certificate Signing Request) in iOS ??

        CSR is not something that is used only in iOS. It is used in many places.

        A CSR or Certificate Signing request is a block of encoded text that is given to a Certificate Authority when applying for a certificate.

        Here , we create a CSR and give it to apple which will create the certificate for you. También contiene la clave pública que se incluirá en el certificado. La clave privada se suele crear al mismo tiempo que se crea el CSR, formando un par de claves. Una autoridad de certificación utilizará un CSR para crear su certificado, pero no necesita su clave privada. Debe mantener su clave privada en secreto. El certificado creado con una determinada CSR sólo funcionará con la clave privada que se generó con ella. Así que si pierde la clave privada, el certificado ya no funcionará.

        (opcional – consulte este enlace para entender cómo funciona el CSR para los certificados SSL. El procedimiento y funcionamiento es casi similar)

        El proceso :

        • Crear una solicitud de firma de certificado (CSR) a través de la aplicación de acceso al llavero.
        • La aplicación de llavero creará un private key(la clave privada se almacenará en el llavero) y un archivo certSigningRequest que luego subirás a Apple.
        • Apple probará la solicitud y emitirá un certificado para ti. El certificado contendrá el public key que se puede descargar en tu sistema. Una vez que lo hayas descargado, tienes que ponerlo en tu aplicación de acceso al llavero haciendo doble clic en él. El Certificado será empujado en el Llavero y emparejado con la clave privada para formar la Identidad de Firma de Código.
        • Por último, en el momento de la instalación de la app, la clave privada utilizada para firmar la app coincide con la clave pública del certificado. Si falla, la app no se instala.
          • Eso es todo.

            ¡Disfruta!!!

            Si te ha gustado leer este post, por favor comparte y da unas palmadas para que otros puedan encontrarlo 👏👏👏👏👏 !!!!

            Puedes seguirme en Medium para obtener artículos frescos. También, conéctate conmigo en LinkedIn y Twitter.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *