Arquivos P12 e Mobileprovision Explicados: Certificados de Assinatura do iPhone

Assinadores no próprio dispositivo, como Feather e KSign, pedem dois arquivos antes de conseguir instalar qualquer coisa: um certificado .p12 e um perfil .mobileprovision. Muitas pessoas conseguem esses arquivos com outra pessoa sem saber o que eles contêm ou o que pode dar errado. Este guia explica os dois arquivos, como verificá-los e os riscos envolvidos, usando a própria documentação da Apple.

Os riscos primeiro

  • Um arquivo .p12 contém uma chave privada. Quem tem o arquivo e sua senha pode assinar apps como se fosse aquele desenvolvedor. Nunca publique esse arquivo nem o envie para pessoas em quem você não confia.
  • A Apple pode revogar qualquer certificado. A documentação da Apple diz que ela “pode revogar certificados digitais a qualquer momento, a seu exclusivo critério”. Quando isso acontece, os apps assinados com ele param de funcionar.
  • Certificados compartilhados e comprados são os que mais sofrem revogação. Um certificado usado por muitos desconhecidos para distribuição pública está fora dos termos sob os quais foi emitido. Você não controla quando ele será revogado, e o dinheiro pago por ele geralmente não é reembolsado. Veja segurança de certificados enterprise.
  • O certificado não verifica o app. A assinatura indica quem assinou um app, não se ele é seguro. Verifique os arquivos IPA você mesmo: veja como escanear arquivos IPA em busca de malware.

O que é um arquivo .p12

Um certificado de assinatura sozinho é público. O que realmente permite assinar apps é o certificado junto com sua chave privada, criada no Mac do desenvolvedor. O guia do Keychain Access da Apple descreve o formato .p12 (Personal Information Exchange) como um arquivo que “pode ser importado como um backup do seu certificado digital e chave privada”. Ao exportá-lo, o Keychain Access pede uma senha, e essa senha é necessária para importá-lo novamente. É por isso que os assinadores pedem um arquivo .p12 e uma senha.

A Apple emite diferentes tipos de certificado. Para instalar em iPhones fora da App Store, os que você encontra são certificados de desenvolvimento, certificados de distribuição de uma assinatura paga do Apple Developer Program e certificados de distribuição interna (in-house) do Apple Developer Enterprise Program.

O que é um arquivo .mobileprovision

Um provisioning profile é um arquivo assinado pela Apple que diz quais apps podem rodar, assinados por quem, em quais dispositivos e com quais permissões. A nota técnica TN3125 da Apple lista o que há dentro dele:

  • DeveloperCertificates: os certificados autorizados a assinar apps cobertos pelo perfil. Seu .p12 precisa corresponder a um deles.
  • App ID: a maioria dos perfis se aplica a um único App ID. Um App ID wildcard pode cobrir vários apps.
  • Devices: a maioria dos perfis lista dispositivos específicos pelo UDID (ProvisionedDevices). Perfis In-House (Enterprise), por outro lado, têm ProvisionsAllDevices, então funcionam em qualquer dispositivo. Veja como encontrar o UDID do seu iPhone.
  • ExpirationDate: todo perfil tem uma data de expiração. Depois dessa data, o perfil deixa de ser válido.
  • Entitlements: uma lista de permissões liberadas, como notificações push ou app groups. A Apple afirma que toda entitlement que um app reivindica precisa estar na lista de permissões do perfil.

A Apple também explica que o dispositivo verifica a assinatura do perfil e, em seguida, checa se o app atende aos critérios do perfil. Se o certificado de assinatura do app, o App ID, o dispositivo ou as entitlements não corresponderem, o iOS não vai executá-lo.

Como verificar os arquivos você mesmo

  • Dentro de um signer: o Feather lista “informações detalhadas sobre apps e seus certificados” entre seus recursos, então depois de importar você pode ver o nome, o tipo e a validade ali.
  • No Mac: a TN3125 da Apple mostra como decodificar um perfil no Terminal com security cms -D -i profile.mobileprovision. A saída inclui o ExpirationDate, a lista de dispositivos ou ProvisionsAllDevices, e as entitlements.
  • Confira se o par corresponde: o certificado dentro do .p12 precisa ser um dos DeveloperCertificates do perfil. Uma incompatibilidade é um motivo comum para um signer reportar erro antes de instalar.

Problemas comuns com arquivos de certificado

  • Senha errada: o .p12 não será importado. Só quem o exportou sabe a senha.
  • Perfil expirado: os apps assinados com ele param de abrir depois da data de validade. Você precisa de um perfil novo e, em seguida, re-assinar os apps. Veja como re-assinar arquivos IPA.
  • Dispositivo fora do perfil: em perfis de desenvolvimento e ad hoc, o seu UDID precisa estar na lista. Caso contrário, a instalação falha, muitas vezes com o erro “integrity could not be verified”: veja as soluções para o erro de integridade.
  • Certificado revogado: todo app assinado com ele para de funcionar na hora, e nenhuma configuração no iPhone muda isso. Veja o que fazer depois de uma revogação.
  • Entitlement ausente: um app que precisa de um recurso que o perfil não permite pode até instalar, mas falhar naquele recurso específico, ou simplesmente não instalar de jeito nenhum.

Onde o Scarlet iOS se encaixa

O Scarlet não pede um .p12 ou um perfil. Ele assina com um certificado compartilhado em vez do seu Apple ID, e é por isso que a configuração é simples, mas também é por isso que todo app instalado por meio dele para de abrir quando a Apple revoga esse certificado. O Scarlet é confirmado no iOS 14 até o iOS 26; o suporte ao iOS 27 é relatado por terceiros, mas não confirmado oficialmente. Se você tiver seu próprio certificado do Apple Developer Program, um assinador como o Feather ou o KSign o usa diretamente. Para entender os prós e contras, veja assinatura no dispositivo vs assinatura pelo computador.

Perguntas frequentes

Posso criar um .p12 e um perfil com um Apple ID gratuito?

Um Apple ID gratuito dá a você um certificado de personal team que ferramentas como Xcode, Sideloadly e SideStore gerenciam para você. Perfis gerados a partir dele duram 7 dias. Os assinadores feitos para arquivos .p12 são voltados principalmente para certificados de desenvolvedor pagos.

É seguro usar um certificado que alguém compartilhou online?

Ele funciona até ser revogado, o que pode acontecer a qualquer momento e sem aviso. Você também não tem como saber quem mais tem a chave privada. Trate isso como algo temporário e nunca assine nada sensível com ele.

Um novo perfil resolve um certificado revogado?

Não. Um perfil especifica quais certificados ele permite. Se o certificado for revogado, você precisa de um certificado diferente e de um perfil que o inclua.

Posts Similares