Como crio um arquivo .pem para ser armazenado no servidor de hospedagem para dados de carga útil do APN?
Como crio um arquivo .pem para ser armazenado no servidor de hospedagem para dados de carga útil do APN?
Respostas:
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:
apns-dev-cert.p12
arquivo como um local em que você possa acessá-lo. Não há necessidade de digitar uma senha.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.
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
Passos:
Isso fornece três arquivos:
PushChatKey.p12
)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
Inicie o aplicativo Terminal e digite o seguinte comando após o prompt
openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes
- >> 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.
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
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:
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.
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.
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.
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.
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.
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.
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.
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.
Seu chaveiro de desenvolvimento agora deve mostrar o certificado push com uma chave privada em Meus Certificados no Acesso às Chaves:
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.
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!
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 .cer
arquivo 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í.
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!!
Eu nunca me lembro do openssl
comando necessário para criar um .pem
arquivo, 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.sh
e salve-o na pasta do usuário ( /Users/<username>
?). Após criar o arquivo, faça um chmod +x signpem.sh
para torná-lo executável e, em seguida, você poderá executar:
~/signpem myCertificate.p12 myCertificate.pem
E myCertificate.pem
será criado.