> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Geração de certificado p12 para iOS

> Gere e faça upload de um certificado push .p12 para conectar seu aplicativo iOS ou macOS ao Apple Push Notification service (APNs) pelo OneSignal.

Para enviar notificações push para aplicativos iOS, é necessária uma conexão autenticada ao Apple Push Notification Services (APNs). Você pode autenticar usando um método **[baseado em token (chave .p8)](./ios-p8-token-based-connection-to-apns)** ou um método **baseado em certificado (arquivo .p12)** — mas apenas um é necessário.

<Warning>
  Certificados .p12 expiram após um ano. Se você não quer gerenciar a renovação deste certificado, você pode [criar uma chave .p8](./ios-p8-token-based-connection-to-apns) em vez disso, que não expira.
</Warning>

Este guia irá orientá-lo na configuração de um **arquivo baseado em certificado (.p12)**. Isso não é recomendado porque você deve renová-lo anualmente. Isso inclui fazer login na sua conta Apple Developer para gerar o novo certificado e enviá-lo ao seu painel OneSignal todos os anos.

***

## Requisitos

Certifique-se de ter o seguinte antes de começar:

* Um aplicativo iOS ou macOS.
* Uma [**Conta Apple Developer paga**](https://developer.apple.com/) com acesso de [**Admin**](https://appstoreconnect.apple.com/access/users).
* Uma [**Conta OneSignal**](https://onesignal.com).
* Um mac com Xcode 14+.
* O **Bundle ID** para seu app target conforme definido no Xcode.
* Um projeto Xcode com **Push Notification capability habilitada**.

***

## Criar uma Solicitação de Assinatura de Certificado (CSR)

Primeiro você precisa criar um arquivo `.certSigningRequest` no macOS.

1. Abra **Applications > Utilities > Keychain Access**.
2. Na barra de menu, clique em **Keychain Access > Certificate Assistant > Request a Certificate From a Certificate Authority...**

<Frame caption="Acesso às chaves do Mac">
  <img src="https://mintcdn.com/onesignal/YOTSrtBSoqdrJ37A/images/docs/4792ecd2f2859197d192d41e953c7cb461b62a08955e36de8674d13ebe3245d9-image.png?fit=max&auto=format&n=YOTSrtBSoqdrJ37A&q=85&s=0d53d2a7d0a7992bb646cda2c10b2e3f" alt="Menu do Keychain Access mostrando a opção Certificate Assistant" width="709" height="314" data-path="images/docs/4792ecd2f2859197d192d41e953c7cb461b62a08955e36de8674d13ebe3245d9-image.png" />
</Frame>

3. Preencha os campos obrigatórios:
   * **User Email Address**: `[email protected]`
   * **Common Name**: Seu nome ou o nome para o certificado
   * **CA Email Address**: Deixe em branco
   * **Request is**: Selecione **Saved to disk**

<Frame caption="Janela do Assistente de Certificado">
  <img src="https://mintcdn.com/onesignal/Xl2NHJvxakrK4JbL/images/docs/edfa46c8fa6d2a2743ec85d049cbed85d67eb4163388f44c7cbb602740ec1430-image.png?fit=max&auto=format&n=Xl2NHJvxakrK4JbL&q=85&s=d78feadfda1f4a2c71806f8ab10edd04" alt="Janela do Certificate Assistant com campos de e-mail, nome comum e a opção Saved to disk" width="728" height="554" data-path="images/docs/edfa46c8fa6d2a2743ec85d049cbed85d67eb4163388f44c7cbb602740ec1430-image.png" />
</Frame>

4. Clique em **Continue**, escolha um local para salvar o arquivo `.certSigningRequest` e clique em **Save**.

***

## Habilitar push capabilities para o aplicativo

<Note>
  Pule esta seção se você usa **Automatically manage signing** no Xcode.
</Note>

1. Vá para a seção [Identifiers](https://developer.apple.com/account/ios/identifier/bundle) do portal Apple Developer, localize e selecione o **App ID** do seu aplicativo na lista.

<Frame>
  <img src="https://mintcdn.com/onesignal/6v_cVPknFpo5qSVB/images/docs/0f111cc6bc3d596c4f8ede9a8f62f8fafc526358cfc0f2f8b1e1a4f7fc8248fc-image.png?fit=max&auto=format&n=6v_cVPknFpo5qSVB&q=85&s=05b2003fb8c2fcd9131c44a793a0aba3" alt="Seção Identifiers do Apple Developer mostrando a lista de App IDs" width="894" height="319" data-path="images/docs/0f111cc6bc3d596c4f8ede9a8f62f8fafc526358cfc0f2f8b1e1a4f7fc8248fc-image.png" />
</Frame>

2. Habilite a capability **Push Notifications** marcando a caixa.

<Warning>
  **Não** clique em **"Configure"** — apenas habilite o toggle.
</Warning>

<Frame>
  <img src="https://mintcdn.com/onesignal/_KaXe4GQkxsEfa17/images/docs/3a420360bc845131ad00179d9542b9cc0dae47448ee0eef5068e609b7340f5d3-image.png?fit=max&auto=format&n=_KaXe4GQkxsEfa17&q=85&s=ba0781029d19036ddad3db3e45037d2b" alt="Lista de capabilities do App ID com a caixa Push Notifications marcada" width="2008" height="142" data-path="images/docs/3a420360bc845131ad00179d9542b9cc0dae47448ee0eef5068e609b7340f5d3-image.png" />
</Frame>

***

## Criar um certificado push

Siga estes passos para gerar o certificado SSL do Apple Push Notification service (APNs):

1. Visite a [página de Certificados da Apple](https://developer.apple.com/account/resources/certificates/add).

2. Clique no botão **plus (+)** para criar um novo certificado.

3. Em **Services**, selecione:

   * **Apple Push Notification service SSL (Sandbox & Production)**
   * Em seguida, clique em **Continue**

   <Frame>
     <img src="https://mintcdn.com/onesignal/MUgio66t0sYhGEvj/images/docs/6a48d1c410b80812f2893209eec0ae3d761ec86e40229b03ac780f1ae7124e48-image.png?fit=max&auto=format&n=MUgio66t0sYhGEvj&q=85&s=6e0d0bb4d73dab95c32a0dc96d740723" alt="Página de Certificados da Apple mostrando a opção Apple Push Notification service SSL Sandbox and Production" width="896" height="865" data-path="images/docs/6a48d1c410b80812f2893209eec0ae3d761ec86e40229b03ac780f1ae7124e48-image.png" />
   </Frame>

4. Selecione seu **App ID** na lista e clique em **Continue**.

<Frame>
  <img src="https://mintcdn.com/onesignal/_KaXe4GQkxsEfa17/images/docs/35daef0614fe669cadeb12adb900f0da6deab8b4283e29e1ba2712ce3d23e634-image.png?fit=max&auto=format&n=_KaXe4GQkxsEfa17&q=85&s=af9f0fb1fefed645b5ebefc6964d0d2d" alt="Dropdown de seleção do App ID para o certificado push" width="897" height="366" data-path="images/docs/35daef0614fe669cadeb12adb900f0da6deab8b4283e29e1ba2712ce3d23e634-image.png" />
</Frame>

5. Faça upload do arquivo `.certSigningRequest` gerado anteriormente.

<Frame>
  <img src="https://mintcdn.com/onesignal/MUgio66t0sYhGEvj/images/docs/6bb85bd5c6f420f73f1325ca5ccceea1c9cb22c618ccae8e7b34b5ead7fe28aa-image.png?fit=max&auto=format&n=MUgio66t0sYhGEvj&q=85&s=1ca586cee9190e53ea681b411e36a786" alt="Diálogo para upload do arquivo Certificate Signing Request" width="662" height="626" data-path="images/docs/6bb85bd5c6f420f73f1325ca5ccceea1c9cb22c618ccae8e7b34b5ead7fe28aa-image.png" />
</Frame>

6. Clique em **Continue**, depois clique em **Download** para salvar o arquivo `.cer` resultante no seu computador.

<Frame>
  <img src="https://mintcdn.com/onesignal/9_Q1FZLh6C0BFLq-/images/docs/ca14b193b3ac73e0e4dfbc1697a3e24454341ebd880d2391d369fe20868f9434-image.png?fit=max&auto=format&n=9_Q1FZLh6C0BFLq-&q=85&s=e81079a2a25e6e82ed0eb9f1204ab774" alt="Botão Download para o arquivo de certificado .cer gerado" width="924" height="368" data-path="images/docs/ca14b193b3ac73e0e4dfbc1697a3e24454341ebd880d2391d369fe20868f9434-image.png" />
</Frame>

Você usará este arquivo `.cer` na próxima seção para criar seu certificado `.p12`.

***

## Criar uma chave privada e exportar o certificado .p12

1. **Clique duas vezes** no arquivo `.cer` baixado para importá-lo para o **Keychain Access**.

2. No Keychain Access, navegue para:

   * **Keychains > Login**
   * **Category > My Certificates**

3. Localize o certificado chamado **Apple Push Services**.

4. **Clique com o botão direito** no certificado e selecione **Export**.

<Frame caption="Export irá gerar um arquivo .p12 no local desejado">
  <img src="https://mintcdn.com/onesignal/RWtLFPeffHrC81wI/images/docs/a8aae38ea4755020f4695ddd6fd2ccfc0e0bd8d262414665467f973d3ed90912-image.png?fit=max&auto=format&n=RWtLFPeffHrC81wI&q=85&s=ce1453c325f0ad6790754f25a7a1a506" alt="Menu de contexto do Keychain Access mostrando a opção Export para o certificado Apple Push Services" width="960" height="720" data-path="images/docs/a8aae38ea4755020f4695ddd6fd2ccfc0e0bd8d262414665467f973d3ed90912-image.png" />
</Frame>

5. Escolha um local para salvar o arquivo e selecione o formato de arquivo como **`.p12`**.

6. Quando solicitado, defina uma **senha** para o arquivo `.p12`. Você precisará desta senha ao fazer upload para o OneSignal.

<Frame>
  <img src="https://mintcdn.com/onesignal/6v_cVPknFpo5qSVB/images/docs/070cbc6d0197377e3805cf23e92bf9d876efdb1754e9c233db8bde453cc7dcd4-Screenshot_2025-04-16_at_2.10.17_PM.png?fit=max&auto=format&n=6v_cVPknFpo5qSVB&q=85&s=58e96cbb675ff90014c37e7fd1852975" alt="Diálogo de salvamento mostrando a seleção do formato .p12 e o campo de senha" width="918" height="558" data-path="images/docs/070cbc6d0197377e3805cf23e92bf9d876efdb1754e9c233db8bde453cc7dcd4-Screenshot_2025-04-16_at_2.10.17_PM.png" />
</Frame>

***

## Fazer upload do .p12 para o OneSignal

1. No seu [painel do OneSignal](https://onesignal.com), vá para seu aplicativo > **Settings > Push & In-App > Apple iOS**.
2. Faça upload do arquivo `.p12` (e insira a senha se você definiu uma). Clique em **Save**.

<Check>
  Você configurou com sucesso a **autenticação APNs usando um certificado .p12** no OneSignal.

  Seu aplicativo iOS agora está pronto para enviar e receber notificações push! 🎉
</Check>

***

## Solução de problemas do .p12

### Erro de formato de certificado inválido

**Causa:** O arquivo enviado não está no formato `.p12`.

**Solução:** Certifique-se de exportar o certificado do Keychain Access **como `.p12`** (não `.cer` ou `.pem`).

### "Incorrect password" ao fazer upload para o OneSignal

**Causa:** A senha foi inserida incorretamente ou não foi definida.

**Solução:**

* Tente exportar novamente e defina uma **nova senha**.
* Certifique-se de que não há espaços extras ao colar.
* Se estiver usando o Provisionator, a senha é mostrada na UI.

### Chave privada ausente no arquivo exportado

**Causa:** O certificado foi importado mas não foi pareado com uma chave privada.

**Solução:**

* Certifique-se de **gerar o CSR** do Keychain Access na mesma máquina.
* Após baixar o arquivo `.cer`, clique duas vezes para instalar e verifique se a chave aparece em **My Certificates**.

### Notificações push não funcionam após upload

**Causa:** App ID incorreto ou Provisioning Profile sem capabilities.

**Solução:**

* Confirme se o `.p12` corresponde ao **App ID** usado no aplicativo.
* No Apple Developer Portal, certifique-se de que o App ID tem **Push Notifications habilitadas**.
* Certifique-se de que o Provisioning Profile inclui **Push**.

### Certificado expirado

**Causa:** O certificado `.p12` não é mais válido.

**Solução:**

* Vá para Apple Developer > Certificates e verifique a expiração.
* Revogue o certificado antigo e crie um novo.

***

## Próximos passos

<Columns cols={2}>
  <Card title="Configuração do SDK iOS" icon="apple" href="./ios-sdk-setup">
    Instale o SDK do OneSignal, inicialize-o no seu aplicativo e envie uma notificação de teste.
  </Card>

  <Card title="Configuração do SDK mobile" icon="mobile" href="./mobile-sdk-setup">
    Escolha sua plataforma e siga o guia completo de integração do SDK para Android, iOS ou frameworks multiplataforma.
  </Card>
</Columns>

***

## Perguntas frequentes

### Quando meu certificado .p12 expira e como posso renová-lo?

Certificados .p12 expiram **um ano** após a criação. Para renovar, gere um novo CSR, crie um novo certificado push no Apple Developer, exporte-o como .p12 e faça o novo upload para o seu painel do OneSignal. Defina um lembrete no calendário para evitar interrupções. Como alternativa, mude para uma [chave .p8](./ios-p8-token-based-connection-to-apns), que não expira.

### Devo usar .p8 ou .p12?

O OneSignal recomenda **chaves .p8** para a maioria dos aplicativos. Uma chave .p8 não expira, funciona em todos os aplicativos da sua conta Apple Developer e é mais simples de gerenciar. Um certificado .p12 é específico para cada aplicativo e deve ser renovado anualmente. Consulte o [guia de chave .p8](./ios-p8-token-based-connection-to-apns) para instruções de configuração.

### Preciso de um provisioning profile e como criá-lo?

Sim, a Apple requer diferentes tipos de profiles para desenvolvimento, testes (Ad Hoc) e distribuição para a App Store.

No Xcode, você deve ser capaz de selecionar **Automatically manage signing** para criar um automaticamente.

<Frame>
  <img src="https://mintcdn.com/onesignal/jBdBk5XvQR5eKOks/images/docs/73993224529058ffe5797afc5998c49bd54a64d5dd97cce26479b5f69c0bf46d-Screenshot_2025-04-21_at_4.48.21_PM.png?fit=max&auto=format&n=jBdBk5XvQR5eKOks&q=85&s=794544ccd6d05744f053386b2a961c74" alt="Aba Signing and Capabilities do Xcode com Automatically manage signing habilitado" width="2058" height="632" data-path="images/docs/73993224529058ffe5797afc5998c49bd54a64d5dd97cce26479b5f69c0bf46d-Screenshot_2025-04-21_at_4.48.21_PM.png" />
</Frame>

Caso contrário, consulte a [documentação da Apple sobre provisioning profiles](https://developer.apple.com/help/account/provisioning-profiles/provisioning-profile-updates) para detalhes.

***
