2009-11-19 28 views
149

¿Cómo creo un archivo .pem para almacenar en el servidor de alojamiento para datos de carga APN?Creando archivo .pem para APNS?

+1

¿Puedo usar .p12 para apns en lugar de .pem? –

+0

FYI definición de .pem: https://serverfault.com/a/21158/193377 PEM solo no es un certificado, es solo una forma de codificar datos. ... es seguro pegar en el cuerpo de un mensaje de correo electrónico porque tiene líneas de anclaje y está limpio en 7 bits. – AnneTheAgile

+0

https://iosdevcenters.blogspot.com/2017/09/how-to-create-pem-file-for-apns-ios.html –

Respuesta

303

Esto es lo que hice, De: blog.boxedice.com y "iPhone Advanced Projects" capítulo 10 porJoe Pezzillo.

Con la aps_developer_identity.cer en el llavero Llavero

  1. lanzamiento

    Acceso desde su Mac local y de la llave de acceso, filtro por la categoría Certificados. Verá una opción ampliable llamada "Servicios de Apple Development Push"
  2. Haga clic derecho en "Apple Development Push Services"> Exportar "Apple Development Push Services ID123". Guarde esto como archivo apns-dev-cert.p12 en algún lugar donde pueda acceder a él. No es necesario ingresar una contraseña.
  3. El siguiente comando genera el certificado en la Terminal de Mac como formato PEM (Privacy Enhanced certificado de seguridad de correo):

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

En el servidor de establecer el permiso de archivo de esta clave no cifrada usando chmod 400.

+3

He seguido los pasos anteriores y ahora está funcionando. He conservado el certificado y la secuencia de comandos php en mi servidor web local (Xampp). Puedo obtener el token del dispositivo, y lo estoy usando en el script php. La secuencia de comandos php es capaz de conectarse y enviar datos de carga útil. Pero aún así no puedo recibir la notificación PUSH. ¿Cuál es el problema? ¿Las notificaciones tardan en llegar? – Biranchi

+2

'chmod 400' SÍ !!!!!! esto es lo que necesitaba hacer –

+0

usando esto, he creado claves y permisos modificados también. Pero aún así, no puedo conectarme al servidor APNS y el comando de retroalimentación todavía está regresando '# '. Alguna pista... ? – Prem

10

- >>Apple's own tutorial < < - es el único conjunto de instrucciones que he encontrado. Es sencillo y puedo confirmar que funciona brillantemente tanto en un servidor linux php como en un servidor Windows php.

Puede encontrar su proceso de creación de peones de 5 pasos directamente en la parte inferior de la página.

+0

¡Sí! Solo sigue el sencillo tutorial. Solo un simple comando openssl. No sé si es importante, pero ejecuté el comando haciendo SSH en el servidor que se conecta a APNS. – tylerl

+1

@tylerl, el PEM se puede generar desde cualquier máquina; no tiene que ser el servidor en el que residirá. – capikaw

+0

¿Debo ejecutar este proceso en el servidor en el que se implementa el código php? o puedo usar el archivo .pem generado desde mi Mac? – Jatin

14

lanzamiento de la aplicación Terminal e introduzca el siguiente comando después del indicador

openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes 
+1

Después de generar un p12, esta debería ser la respuesta. – Stone

1

Ésta es la forma en que lo hice en Windows 7, después de instalar OpenSSL (enlace va al instalador Win32, elija la versión más reciente y no la versión ligera).

Con este método, solo necesita el archivo .cer descargado de Apple.

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

Esto creará un archivo que luego deberá agregar también su clave privada.

----- BEGIN PRIVATE KEY -----
MIIEuwIBADANBgkqhk .... etc
MIIEuwIBADANBgkqhk .... etc
MIIEuwIBADANBgkqhk .... etc ....
MIIEuwIBADANBgkqhk etc
FIN ----- ----- CLAVE PRIVADA
----- BEGIN CERTIFICATE -----
AwIBAgwIBADAwIBADA .... etc
AwIBAgwIBADAwIBADA .... etc
AwIBAgwIBADAwIBADA. ... etc
----- CERTIFICAR CERRAR -----

Eso es todo.

54

Pasos:

  1. Crear un CSR Usando llavero acceso
  2. Crear un P12 Usando clave de acceso cadena utilizando la clave privada
  3. APN ID de aplicación y el certificado

Esto le da tres archivos:

  • The C SR
  • La clave privada como un archivo de p12 (PushChatKey.p12)
  • El certificado SSL, aps_development.cer

Vaya a la carpeta en la que descargó los archivos, en mi caso el escritorio:

$ cd ~/Desktop/

convertir el archivo .cer en un archivo .pem:

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

Convertir archivo de la clave privada en un archivo .p12 .pem:

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

Introduzca importación Contraseña:

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

Primero tiene que introducir la contraseña para la p.12 archivo para que openssl pueda leerlo. Luego debe ingresar una nueva frase de contraseña que se usará para encriptar el archivo PEM. Nuevamente para este tutorial usé "pushchat" como frase de contraseña de PEM. Deberías elegir algo más seguro. Nota: si no ingresa una frase de contraseña de PEM, openssl no mostrará un mensaje de error, pero el archivo .pem generado no tendrá la clave privada en él.

Por último, combinar el certificado y la clave en un único archivo .pem:

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

187

Fase de desarrollo:

Paso 1: Crear certificado .pem del Certificado p.12
Comando:openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12

Paso 2: Crear clave .pem desde la tecla.p12
Comando:openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12

Paso 3: opcional (Si desea eliminar frase de pedido en la segunda etapa)
Comando:openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem

Paso 4: Ahora tenemos fusionar la Clave .pem y Certificado .pem para obtener Desarrollo .pem necesario para Notificaciones Push en la Fase de Desarrollo de la Aplicación
Comandante d:cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem (If 3rd step is performed)

Comando:cat apns-dev-cert.pem apns-dev-key.pem > apns-dev.pem (if not)

Paso 5: Comprobar la validez del certificado y conectividad a APN
Comando:openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key.pem (If 3rd step is not performed)
Comando:openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key-noenc.pem (If performed)

P roducción Fase:

Paso 1: Crear certificado .pem del Certificado p.12
Comando:openssl pkcs12 -clcerts -nokeys -out apns-pro-cert.pem -in apns-pro-cert.p12

Paso 2: Crear .pem llave de la llave p.12
de comando:openssl pkcs12 -nocerts -out apns-pro-key.pem -in apns-pro-key.p12

Paso 3: Opcional (Si desea eliminar frase de pedido en la segunda etapa)
Comando:openssl rsa -in apns-pro-key.pem -out apns-pro-key-noenc.pem

Paso 4: Ahora tenemos que combinar el .pem clave y el certificado .pem para obtener .pem producción necesaria para notificaciones push en fase de producción de Aplicación
Comando:cat apns-pro-cert.pem apns-pro-key-noenc.pem > apns-pro.pem (If 3rd step is performed) Comando:cat apns-pro-cert.pem apns-pro-key.pem > apns-pro.pem (if not)

Paso 5: Comprobar la validez del certificado y la conectividad a APN
Comando:openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key.pem (If 3rd step is not performed)
Comando:openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key-noenc.pem (si se realiza)

+4

Gracias, este es el único aquí que funcionó para mí. –

+5

¡Lo guardé en mi preciosa bóveda! : P ¡La mejor respuesta de la historia! – Blackening

+3

Eres un dios, esto funciona gracias. UP VOTO. Esta debería ser la respuesta porque profundiza en cómo crearla paso a paso – MNM

1

No recuerdo el comando openssl necesaria para crear un archivo .pem, así que hice este script bash para simplificar el proceso:

#!/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 

que sea, por ejemplo, signpem.sh y guardarlo en su usuario de carpeta (/Users/<username>?). Después de crear el archivo, hacer una chmod +x signpem.sh para que sea ejecutable y luego se puede ejecutar:

~/signpem myCertificate.p12 myCertificate.pem

Y myCertificate.pem se creará.

2

Sugeriría una solución mucho más simple. Solo use Certifire.
Certifire es una aplicación macOS que genera certificados de notificación push de Apple con solo un clic en un par de segundos.

Estos son los pasos:
1. Descargue la aplicación.
2. Inicie sesión con las credenciales de su cuenta de desarrollador de Apple.
3. Elija la aplicación ID
4. Haga clic en el botón "Generar"
5. ¡Ya está!

Obtendrá certificados APN en formato .pem, así como en formato .p12. ¡Aún más, también obtendrás .pem y .p12 (clave + cert)!
¡Mucho más, también obtendrá versiones sin contraseña de todos estos certificados!

enter image description here

enter image description here

0

Hay una manera más fácil de crear .PEM archivo si ya ha APN archivo de p12 en el acceso del llavero.

Abrir el terminal y escriba el siguiente comando:

Para Devlopment openssl pkcs12 -en APN-div-cert.p12 salida privado -nodes APN-div-cert.pem -clcerts

para Producción openssl pkcs12 -en APN-dist-cert.p12 salida privado -nodes APN-dist-cert.pem -clcerts

Cambiar el nombre de su archivo P12 con este nombre: APN-div-cert.p12 lo contrario en lugar de esto necesitas ingresar y nuestro nombre de archivo ¡¡Gracias!!

Cuestiones relacionadas