Criando arquivo .pem para APNS?

177

Como crio um arquivo .pem para ser armazenado no servidor de hospedagem para dados de carga útil do APN?

Biranchi
fonte
1
Posso usar .p12 para apns em vez de .pem?
Gajendra K Chauhan 31/03
A definição de .pem: serverfault.com/a/21158/193377 do PEM por si só não é um certificado, é apenas uma maneira de codificar dados. ... é seguro colar no corpo de uma mensagem de email porque possui linhas de ancoragem e é limpo em 7 bits.
AnneTheAgile

Respostas:

365

Aqui está o que eu fiz: De: blog.boxedice.com e "iPhone Advanced Projects", capítulo 10, de Joe Pezzillo.

Com o aps_developer_identity.cer no chaveiro:

  1. Inicie o Acesso ao chaveiro no Mac local e no chaveiro de login, filtre pela categoria Certificados. Você verá uma opção expansível chamada "Apple Development Push Services"
  2. Clique com o botão direito do mouse em "Apple Development Push Services"> Exportar "Apple Development Push Services ID123". Salve este apns-dev-cert.p12arquivo como um local em que você possa acessá-lo. Não há necessidade de digitar uma senha.
  3. O próximo comando gera o certificado no Terminal do Mac para o formato PEM (Certificado de segurança de segurança aprimorada de privacidade):

    openssl pkcs12 -in apns-dev-cert.p12 -out apns-dev-cert.pem -nodes -clcerts

No servidor, defina a permissão de arquivo dessa chave não criptografada usando o chmod 400.

zaph
fonte
3
Eu segui as etapas acima e agora está funcionando. Mantive o certificado e o script php no meu servidor web local (Xampp). Eu sou capaz de obter o token do dispositivo e estou usando-o no script php. O script php é capaz de conectar e enviar dados de carga útil. Mas ainda assim não consigo obter a notificação de envio. Qual é o problema ? As notificações demoram para chegar ???
22909 Biranchi
12
No Acesso às Chaves do Mavericks (10.9), existe uma opção para exportar como .pem! Basta clicar com o botão direito do mouse no certificado "Serviços Apple Push / iOS de Desenvolvimento / Produção dentro do Keychain Access e optar por Exportá-lo. Altere o formato do arquivo para .pem - done! Também disponível como opções de exportação: .p7b & .p12
tylerl
5
.pem está desativado para mim, yosemite beta7. Eu tenho alguns problemas criando o .pem, quando eu abri-lo ele diz que é para distribuição em vez dev
Cristi Baluta
2
.pem não está desativado para mim, mas não consigo salvar como p12. É assim que parece: i.imgur.com/U2M40dU.png
FooBar
2
No macOS 10.14 Mojave usando o aplicativo Keychain Access, você pode escolher Exportar seu "Apple Push Services: certificado com.yourBundleIdentifier" para o formato de arquivo "Privacy Enhanced Mail (.pem)" e salvar quando quiser.
5uper_0leh
226

Fase de desenvolvimento:

Etapa 1: Criar .pem de certificado a partir de certificado .p12
openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12

Etapa 2: Criar .pem da chave a partir da chave .p12
openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12

Etapa 3 (opcional): se você deseja remover a senha solicitada na segunda etapa
openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem

Etapa 4: Agora temos que mesclar o Key .pem e o Certificate .pem para obter o .pem de desenvolvimento necessário para as notificações por push na fase de desenvolvimento do aplicativo.

Se a terceira etapa foi executada, execute:
cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem

Se o terceiro passo não foi executado, execute:
cat apns-dev-cert.pem apns-dev-key.pem > apns-dev.pem

Etapa 5: verificar a validade e a conectividade do certificado ao APNS

Se a terceira etapa foi executada, execute:
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key-noenc.pem

Se o terceiro passo não foi executado, execute:
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key.pem

Fase de produção:

Etapa 1: Criar .pem de certificado a partir de certificado .p12
openssl pkcs12 -clcerts -nokeys -out apns-pro-cert.pem -in apns-pro-cert.p12

Etapa 2: Criar .pem da chave a partir da chave .p12
openssl pkcs12 -nocerts -out apns-pro-key.pem -in apns-pro-key.p12

Etapa 3 (opcional): se você deseja remover a senha solicitada na segunda etapa
openssl rsa -in apns-pro-key.pem -out apns-pro-key-noenc.pem

Etapa 4: agora temos que mesclar o Key .pem e o Certificate .pem para obter o .pem de produção necessário para as notificações por push na fase de produção do aplicativo.

Se a terceira etapa foi executada, execute:
cat apns-pro-cert.pem apns-pro-key-noenc.pem > apns-pro.pem

Se o terceiro passo não foi executado, execute:
cat apns-pro-cert.pem apns-pro-key.pem > apns-pro.pem

Etapa 5: verifique a validade e a conectividade do certificado ao APNS.

Se a terceira etapa foi executada, execute:
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key-noenc.pem

Se o terceiro passo não foi executado, execute:
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key.pem

Ashish Chhabra
fonte
5
Obrigado, este é o único aqui que trabalhou para mim.
Erik Villegas
6
Guardei isso no meu precioso cofre! : P A melhor resposta de todos os tempos !!
Blackening
3
Você é um deus, isso funciona, obrigado. UP VOTO. Esta deve ser a resposta porque vai em profundidade sobre como criar passo a passo
MNM
2
Certamente, essa deve ser a resposta aceita, porque a resposta de @Rahul Sharma não produziu o resultado esperado, enquanto essa resposta foi perfeita.
Nowdeen
Obrigado, você salvou meu horário para verificar a validade do certificado. Esta deve ser a resposta aceita @Biranchi
Sourabh Sharma
59

Passos:

  1. Criar um CSR usando o acesso ao chaveiro
  2. Criar um P12 usando acesso ao chaveiro usando chave privada
  3. ID e certificado do aplicativo APNS

Isso fornece três arquivos:

  • O CSR
  • A chave privada como um arquivo p12 ( PushChatKey.p12)
  • O certificado SSL, aps_development.cer

Vá para a pasta em que você baixou os arquivos, no meu caso, a área de trabalho:

$ cd ~/Desktop/

Converta o arquivo .cer em um arquivo .pem:

$ openssl x509 -in aps_development.cer -inform der -out PushChatCert.pem

Converta o arquivo .p12 da chave privada em um arquivo .pem:

$ openssl pkcs12 -nocerts -out PushChatKey.pem -in PushChatKey.p12

Digite a Senha de importação:

MAC verified OK Enter PEM pass phrase: Verifying - Enter PEM pass phrase:

Primeiro, você precisa digitar a senha do arquivo .p12 para que o openssl possa lê-lo. Em seguida, é necessário inserir uma nova senha que será usada para criptografar o arquivo PEM. Novamente neste tutorial, usei "pushchat" como a senha do PEM. Você deve escolher algo mais seguro. Nota: se você não digitar uma senha do PEM, o openssl não fornecerá uma mensagem de erro, mas o arquivo .pem gerado não terá a chave privada.

Por fim, combine o certificado e a chave em um único arquivo .pem:

$ cat PushChatCert.pem PushChatKey.pem > ck.pem

sarit bahuguna
fonte
22

Inicie o aplicativo Terminal e digite o seguinte comando após o prompt

  openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes
Durai Amuthan.H
fonte
1
Depois de gerar uma p12, esta deve ser a resposta.
Stone
10

- >> O próprio tutorial da Apple << - é o único conjunto de instruções de trabalho que encontrei. É simples e posso confirmar que funciona brilhantemente em um servidor linux php e em um servidor windows php.

Você pode encontrar o processo de criação de pem em cinco etapas na parte inferior da página.

capikaw
fonte
Sim! Basta seguir o tutorial simples. Apenas um comando openssl simples. Não sei se isso importa, mas executei o comando SSH'ing no servidor que está se conectando ao APNS.
tylerl
1
@tylerl, o PEM pode ser gerado a partir de qualquer máquina - não precisa ser o servidor em que residirá.
capikaw
Preciso executar esse processo no próprio servidor em que o código php é implantado? ou posso usar o arquivo .pem gerado no meu mac?
Jatin
4
O link está quebrado a partir de setembro de 2015
Nicolas Miari 28/09
4

Você pode dar uma olhada aqui. Eu tenho o processo detalhado descrito com imagens, desde a criação do certificado, a chave do aplicativo, o perfil de provisionamento e, eventualmente, o pem. http://docs.moengage.com/docs/apns-certificate-pem-file

Gautam Jain
fonte
4

NOTA: Você deve ter a função de Team Agent ou Admin na App Store Connect para executar qualquer uma dessas tarefas. Se você não faz parte de uma equipe na App Store Connect, isso provavelmente não afeta você.

O envio de notificações por push para um aplicativo iOS requer a criação de chaves de criptografia. No passado, esse era um processo complicado que usava chaves e certificados SSL. Cada certificado SSL era específico para um único aplicativo iOS. Em 2016, a Apple introduziu um novo mecanismo de chave de autenticação mais confiável e fácil de usar. As novas chaves de autenticação são mais flexíveis, simples de manter e aplicar a mais do que no aplicativo iOS.

Embora já se tenham passado anos desde que as chaves de autenticação foram introduzidas, nem todos os serviços as suportam. FireBase e Amazon Pinpoint suportam chaves de autenticação. O Amazon SNS, o Dirigível Urbano, o Twilio e o LeanPlum não. Muitos pacotes de software de código aberto ainda não suportam chaves de autenticação.

Para criar o certificado SSL necessário e exportá-lo como arquivo PEM contendo chaves públicas e privadas:

  1. Navegue até Certificados, identificadores e perfis
  2. Crie ou edite seu ID do aplicativo.
  3. Ativar notificações push para o ID do aplicativo
  4. Adicionar um certificado SSL ao ID do aplicativo
  5. Converta o certificado para o formato PEM

Se você já possui o certificado SSL configurado para o aplicativo no site Apple Developer Center, pode pular adiante para Converter o certificado no formato PEM. Lembre-se de que você terá problemas se também não tiver a chave privada gerada no Mac que criou a solicitação de assinatura que foi carregada na Apple.

Leia para ver como evitar perder o controle dessa chave privada.

Navegue até Certificados, identificadores e perfis

O Xcode não controla certificados ou chaves para notificações por push. Para criar chaves e ativar notificações push para um aplicativo, você deve acessar o site Apple Developer Center. A seção Certificados, identificadores e perfis da sua conta controla IDs e certificados de aplicativos.

Para acessar certificados e perfis, você deve ter uma associação paga ao Apple Developer Program ou fazer parte de uma equipe que possui.

  1. Faça login no site da Apple Developer insira a descrição da imagem aqui
  2. Vá para Conta , depois Certificados, identificadores e perfis insira a descrição da imagem aqui

Crie um ID de aplicativo

Os aplicativos que usam notificações por push não podem usar IDs de aplicativo curinga ou perfis de provisionamento. Cada aplicativo requer que você configure um registro de ID do aplicativo no portal Apple Developer Center para ativar as notificações por push.

  1. Acesse IDs do aplicativo em Identificadores
  2. Pesquise seu aplicativo usando o identificador de pacote. Pode já existir.
  3. Se não houver um ID do aplicativo existente, clique no botão (+) para criá-lo.
  4. Selecione ID do aplicativo explícito na seção Sufixo do ID do aplicativo . insira a descrição da imagem aqui
  5. Digite o identificador de pacote configurável para o aplicativo.
  6. Role até a parte inferior e ative as notificações por push . insira a descrição da imagem aqui
  7. Clique em Continue .
  8. Na próxima tela, clique em Registrar-se para concluir a criação do ID do aplicativo. insira a descrição da imagem aqui

Ativar notificações push para o ID do aplicativo

  1. Acesse IDs do aplicativo em Identificadores
  2. Clique no ID do aplicativo para ver detalhes e role para baixo. insira a descrição da imagem aqui
  3. Clique em Editar insira a descrição da imagem aqui
  4. Na tela Configurações de ID do aplicativo, role para baixo até Push Notifications insira a descrição da imagem aqui
  5. Marque a caixa de seleção para ativar as notificações por push. insira a descrição da imagem aqui

Criar certificados SSL para notificações push é um processo de várias tarefas. Cada tarefa possui várias etapas. Tudo isso é necessário para exportar as chaves no formato P12 ou PEM. Revise as etapas antes de continuar.

Adicionar um certificado SSL ao ID do aplicativo

  1. Em Certificado SSL de Desenvolvimento, clique em Criar Certificado . Você precisará fazer isso posteriormente para produção também.
  2. A Apple solicitará que você crie uma Solicitação de assinatura de certificado insira a descrição da imagem aqui

Para criar um certificado, você precisará fazer uma Solicitação de Assinatura de Certificado (CSR) em um Mac e enviá-lo para a Apple.

Posteriormente, se você precisar exportar este certificado como um arquivo pkcs12 (também conhecido como p12), precisará usar as chaves do mesmo Mac . Quando a solicitação de assinatura é criada, o Keychain Access gera um conjunto de chaves no chaveiro padrão. Essas chaves são necessárias para trabalhar com o certificado que a Apple criará a partir da solicitação de assinatura.

É uma boa prática ter um chaveiro separado especificamente para credenciais usadas para desenvolvimento. Se você fizer isso, verifique se esse chaveiro está definido como o padrão antes de usar o Assistente de Certificado.

Criar um chaveiro para credenciais de desenvolvimento

  1. Abra o acesso ao chaveiro no seu Mac
  2. No menu Arquivo, selecione Nova chave ...
  3. Atribua um nome descritivo ao seu chaveiro, como "Desenvolvimento Compartilhado" ou o nome do seu aplicativo

Criar uma solicitação de assinatura de certificado (CSR)

Ao criar a Solicitação de assinatura de certificado, o Assistente de certificado gera duas chaves de criptografia no conjunto de chaves padrão. É importante tornar o chaveiro de desenvolvimento o padrão para que as chaves estejam no chaveiro certo.

  1. Abra o Acesso ao chaveiro no seu Mac.
  2. Clique com a tecla Control pressionada no chaveiro de desenvolvimento na lista de chaveiros
  3. Selecione Tornar chaveiro "Desenvolvimento compartilhado" Padrão insira a descrição da imagem aqui
  4. No menu Acesso às chaves, selecione Assistente de certificado e , em seguida, Solicitar um certificado de uma autoridade de certificação ... no submenu. insira a descrição da imagem aqui
  5. Quando o Assistente de certificado aparecer, selecione Saved To Disk . insira a descrição da imagem aqui
  6. Digite o endereço de email associado à sua associação ao Apple Developer Program no Endereço de email do usuário campo .
  7. Digite um nome para a chave no campo Nome comum . É uma boa ideia usar o ID do pacote como parte do nome comum. Isso facilita a identificação de quais certificados e chaves pertencem a qual aplicativo.
  8. Clique em continuar. O Assistente de certificado solicitará salvar a solicitação de assinatura em um arquivo.
  9. No Acesso ao chaveiro, torne o chaveiro "login" o padrão novamente.

A criação da solicitação de assinatura gerou um par de chaves. Antes do upload da solicitação de assinatura, verifique se o chaveiro de desenvolvimento possui as chaves. Seus nomes serão os mesmos que o Nome Comum usado na solicitação de assinatura.

insira a descrição da imagem aqui

Carregar a solicitação de assinatura de certificado (CSR)

Depois que a solicitação de assinatura do Certicate for criada, faça o upload para o Apple Developer Center. A Apple criará o certificado de notificação por push a partir da solicitação de assinatura.

  1. Carregar a solicitação de assinatura de certificado
  2. Faça o download do certificado que a Apple criou a partir da Solicitação de assinatura de certificado insira a descrição da imagem aqui
  3. No Acesso ao chaveiro, selecione o chaveiro de desenvolvimento na lista de chaveiros
  4. No menu Arquivo, selecione Importar Itens ... insira a descrição da imagem aqui
  5. Importe o arquivo de certificado baixado da Apple

Seu chaveiro de desenvolvimento agora deve mostrar o certificado push com uma chave privada em Meus Certificados no Acesso às Chaves:

insira a descrição da imagem aqui

Nesse ponto, o chaveiro de desenvolvimento deve ser copiado. Muitas equipes mantêm seus certificados push em unidades USB seguras, comprometem-se com o controle interno de versão ou usam uma solução de backup como o Time Machine. O chaveiro de desenvolvimento pode ser compartilhado entre diferentes membros da equipe porque não contém nenhuma credencial pessoal de assinatura de código.

Arquivos de chaveiros estão localizados em ~/Library/Keychains.

Alguns serviços push de terceiros exigem certificados no formato Privacy Enhanced Mail (PEM), enquanto outros exigem os Padrões de criptografia de chave pública nº 12 (PKCS12 ou P12). O certificado baixado da Apple pode ser usado para exportar certificados nesses formatos - mas apenas se você tiver mantido a chave privada.

Converta o certificado para o formato PEM

  1. No Acesso ao chaveiro, selecione o chaveiro de desenvolvimento criado anteriormente.
  2. Selecione o certificado push em Meus certificados . Deve haver uma chave privada com ela. ! [Baixar certificado de envio CER] (keychain / import complete.png)
  3. No menu Arquivo, selecione Exportar itens ... insira a descrição da imagem aqui
  4. No painel de salvamento que é aberto, selecione Correio Aprimorado por Privacidade (.pem) como o formato do arquivo.
  5. Salve o arquivo
quellish
fonte
3

Eu sugeriria uma solução muito mais simples. Basta usar o Certifire .
O Certifire é um aplicativo do macOS que gera certificados de notificação por push da Apple com apenas um clique em alguns segundos.

Aqui estão as etapas:
1. Baixe o aplicativo.
2. Faça login usando as credenciais da sua conta de desenvolvedor Apple.
3. Escolha o ID do aplicativo
4. Clique no botão "Gerar"
5. Pronto!

Você receberá certificados APN no formato .pem e no formato .p12. Ainda mais, você também combinará .pem e .p12 (chave + cert)!
Muito mais, você também terá versões sem senha de todos esses certificados!

insira a descrição da imagem aqui

insira a descrição da imagem aqui

arturdev
fonte
2

Foi assim que fiz no Windows 7, depois de instalar o OpenSSL (o link vai para o instalador do Win32, escolha a versão mais recente e não a versão light).

Com esse método, você só precisa do .cerarquivo baixado da Apple.

c:\OpenSSL-Win32\bin\openssl.exe x509 -in aps_development.cer -inform DER -out developer_identity.pem -outform PEM

isso criará um arquivo no qual você também precisará adicionar sua chave privada.

-----
COMEÇA A CHAVE PRIVADA ----- MIIEuwIBADANBgkqhk .... etc
MIIEuwIBADANBgkqhk .... etc
MIIEuwIBADANBgkqhk .... etc
MIIEuwIBADANBgkqhk .... etc MIIEuwIBADANBgkqhk .... etc
----- CHAVE PRIVADA
----- COMEÇAR CERTIFICADO -----
AwIBAgwIBADAwIBADA .... etc
AwIBAgwIBADAwIBADA .... etc
AwIBAgwIBADAwIBADA .... etc
----- TERMINAR CERTIFICADO -----

É isso aí.

Rots
fonte
2

Existe uma maneira mais fácil de criar um arquivo .Pem, se você já possui o arquivo p12 no acesso ao seu conjunto de chaves.

Abra o terminal e digite o comando abaixo:

Para Devlopment openssl pkcs12 -em apns-div-cert.p12 -out apns-div-cert.pem -nodes -clcerts

Para produção openssl pkcs12 -em apns-dist-cert.p12 -out apns-dist-cert.pem -nodes -clcerts

Renomeie seu arquivo P12 com este nome: apns-div-cert.p12, caso contrário, em vez disso, será necessário inserir seu nome de arquivo. Obrigado!!

Yash
fonte
1

Eu nunca me lembro do opensslcomando necessário para criar um .pemarquivo, então fiz esse script bash para simplificar o processo:

#!/bin/bash
if [ $# -eq 2 ]
then
    echo "Signing $1..."

    if ! openssl pkcs12 -in $1 -out $2 -nodes -clcerts; then
        echo "Error signing certificate."
    else
        echo "Certificate created successfully: $2"
    fi
else
    if [ $# -gt 2 ]
    then
        echo "Too many arguments"
        echo "Syntax: $0 <input.p12> <output.pem>"
    else
        echo "Missing arguments"
        echo "Syntax: $0 <input.p12> <output.pem>"
    fi
fi

Nomeie-o, por exemplo, signpem.she salve-o na pasta do usuário ( /Users/<username>?). Após criar o arquivo, faça um chmod +x signpem.shpara torná-lo executável e, em seguida, você poderá executar:

~/signpem myCertificate.p12 myCertificate.pem

E myCertificate.pemserá criado.

Alejandro Iván
fonte