O que é um perfil de provisionamento & assinatura de código em iOS?

Source: Stackoverflow e Internet 🤓.

Definição da Apple: Um perfil de provisionamento é uma coleção de entidades digitais que liga exclusivamente desenvolvedores e dispositivos a uma equipe de desenvolvimento autorizada do iPhone e permite que um dispositivo seja usado para testes.

Unlike Android, você não pode instalar qualquer aplicativo em um dispositivo iOS. Ele tem que ser assinado pela Apple primeiro. No entanto, quando você estiver desenvolvendo um aplicativo, você provavelmente quer testá-lo antes de enviá-lo para a Apple para aprovação. O perfil de provisionamento funciona como um link entre o dispositivo e a conta do desenvolvedor. Durante o desenvolvimento, você escolhe quais dispositivos podem executar seu aplicativo e quais serviços de aplicativo seu aplicativo pode acessar. Um perfil de provisionamento é baixado da sua conta de desenvolvedor e incorporado ao pacote do aplicativo, e o pacote inteiro é assinado por código. Um perfil de provisionamento de desenvolvimento deve ser instalado em cada dispositivo no qual você deseja executar seu código de aplicativo. Se as informações no perfil de provisionamento não corresponderem a certos critérios, seu aplicativo não será iniciado.

Cada Perfil de Provisionamento de Desenvolvimento irá conter:

  • Certificados de Desenvolvimento – certificado de desenvolvimento. Estes são para desenvolvedores que desejam testar a aplicação em um dispositivo físico enquanto escrevem código.
  • Unique Device Identifiers (Lista de dispositivos nos quais a aplicação pode rodar)
  • um ID de aplicação (isto pode incluir um wild card * a ser usado para muitas aplicações com identificadores de pacotes similares). – Um ID de aplicativo é uma string de duas partes usada para identificar um ou mais aplicativos de uma única equipe de desenvolvimento.

Dispositivos especificados dentro do perfil de provisionamento podem ser usados para testes somente por aqueles indivíduos cujos Certificados de Desenvolvimento do iPhone estão incluídos no 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, A partir da imagem acima, você pode ver que o AppID é verificado, o certificado é validado, a equipe é equiparada, as capacidades e os direitos são equiparados .

Se todos os passos acima forem bem sucedidos, o binário assinado é enviado para o dispositivo e é validado contra o mesmo perfil de provisionamento no aplicativo e finalmente lançado. Se qualquer uma destas condições falhar, então o aplicativo não será instalado – e você verá um ícone de aplicativo cinza.

A diferença entre os Perfis de Desenvolvimento e Distribuição é que os Perfis de Distribuição não especificam nenhum ID de Dispositivo. Se você quiser lançar um aplicativo que deve ser limitado a um número de dispositivos registrados, você precisa usar um perfil Ad-Hoc para isso.

Distribution Profiles é usado para enviar o aplicativo para a App Store para distribuição. Depois que o aplicativo é revisado pela apple eles assinam no aplicativo com sua própria assinatura que pode rodar em qualquer dispositivo.

Tudo bem, mas o que é assinatura de código?

assinar seu aplicativo permite ao iOS identificar quem assinou seu aplicativo e verificar que seu aplicativo não foi modificado desde que você o assinou. A Identidade de Assinatura consiste em um par de chaves públicas-privadas que a Apple cria para você.

Asymmetric cryptography

Asymmetric cryptography usa uma chave pública e uma chave privada. Os utilizadores têm de guardar a sua chave privada para si próprios, mas podem partilhar a chave pública. E usando essas chaves públicas e privadas, um utilizador pode provar que é realmente ele próprio.

Como funciona a criptografia assimétrica??

Partir do princípio de que existe um UserA e UserB .

  • UserA criar um PrivateKeyA + PublicKeyA.
  • UsuárioB crie um PrivateKeyB + PublicKeyB.

Para assegurar a comunicação entre UserA e UserB,

  • UserA compartilha seu PublicKeyA com UserB .
  • 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. Ele também contém a chave pública que será incluída no certificado. Uma chave privada é normalmente criada ao mesmo tempo que se cria o CSR, fazendo um par de chaves. Uma autoridade de certificado utilizará um CSR para criar o seu certificado, mas não precisa da sua chave privada. Você precisa manter a sua chave privada em segredo. O certificado criado com um CSR específico só funcionará com a chave privada que foi gerada com ele. Assim, se perder a chave privada, o certificado não funcionará mais.

(opcional – consulte este link para compreender como funciona o RSC para certificados SSL. O procedimento e funcionamento é quase similar)

O processo :

  • Create a Certificate Signing Request (CSR) through the Keychain Access Application.
  • Keychain Application irá criar um ficheiro private key(chave privada será armazenada no keychain) e um ficheiro certSigningRequest que irá depois carregar para Apple.
  • Apple irá provar o pedido e emitir um certificado para si. O Certificado conterá o arquivo public key que pode ser baixado para o seu sistema. Depois de ter feito o download, você precisa colocá-lo no seu Keychain Access Application clicando duas vezes nele. O Certificado será empurrado para dentro do Keychain e emparelhado com a chave privada para formar a Identidade de Assinatura de Código.
  • Finalmente, no momento da instalação da aplicação, a chave privada utilizada para assinar a aplicação corresponde à chave pública no certificado. Se falhar, o aplicativo não é instalado.

é isso. !

Desfrute!!

Se você gostou de ler este post, por favor compartilhe e dê algumas palmas para que outros possam encontrá-lo 👏👏👏👏👏 !!!!

Você pode me seguir no Medium para artigos novos. Também, conecte-se comigo no LinkedIn e Twitter.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *