¿Cómo creo un archivo .pem para almacenarlo en el servidor de alojamiento de datos de carga útil de APN?
¿Cómo creo un archivo .pem para almacenarlo en el servidor de alojamiento de datos de carga útil de APN?
Respuestas:
Esto es lo que hice, desde: blog.boxedice.com y "iPhone Advanced Projects" capítulo 10 por Joe Pezzillo.
Con aps_developer_identity.cer en el llavero:
apns-dev-cert.p12
archivo en algún lugar donde pueda acceder. No es necesario ingresar una contraseña.El siguiente comando genera el certificado en la Terminal de Mac para formato PEM (Certificado de seguridad de correo con privacidad mejorada):
openssl pkcs12 -in apns-dev-cert.p12 -out apns-dev-cert.pem -nodes -clcerts
En el servidor, configure el permiso de archivo de esta clave no cifrada mediante el uso de chmod 400.
Fase de desarrollo:
Paso 1: Crear certificado .pem desde certificado .p12
openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12
Paso 2: Crear clave .pem a partir de clave .p12
openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12
Paso 3 (Opcional): si desea eliminar la frase de contraseña solicitada en el segundo paso
openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem
Paso 4: ahora tenemos que fusionar Key .pem y Certificate .pem para obtener Development .pem necesario para las notificaciones push en la fase de desarrollo de la aplicación.
Si se realizó el tercer paso, ejecute:
cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem
Si el tercer paso no fue realizó el , ejecute:
cat apns-dev-cert.pem apns-dev-key.pem > apns-dev.pem
Paso 5: Verifique la validez del certificado y la conectividad a APNS
Si se realizó el tercer paso, ejecute:
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key-noenc.pem
Si no se realizó el tercer paso , ejecute:
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key.pem
Fase de produccion:
Paso 1: Crear certificado .pem desde certificado .p12
openssl pkcs12 -clcerts -nokeys -out apns-pro-cert.pem -in apns-pro-cert.p12
Paso 2: Crear clave .pem a partir de clave .p12
openssl pkcs12 -nocerts -out apns-pro-key.pem -in apns-pro-key.p12
Paso 3 (Opcional): si desea eliminar la frase de contraseña solicitada en el segundo paso
openssl rsa -in apns-pro-key.pem -out apns-pro-key-noenc.pem
Paso 4: ahora tenemos que fusionar Key .pem y Certificate .pem para obtener Production .pem necesario para las notificaciones push en la fase de producción de la aplicación.
Si se realizó el tercer paso, ejecute:
cat apns-pro-cert.pem apns-pro-key-noenc.pem > apns-pro.pem
Si no se realizó el tercer paso , ejecute:
cat apns-pro-cert.pem apns-pro-key.pem > apns-pro.pem
Paso 5: Verifique la validez del certificado y la conectividad a APNS.
Si se realizó el tercer paso, ejecute:
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key-noenc.pem
Si no se realizó el tercer paso , ejecute:
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key.pem
Pasos:
Esto te da tres archivos:
PushChatKey.p12
)aps_development.cer
Vaya a la carpeta donde descargó los archivos, en mi caso el Escritorio:
$ cd ~/Desktop/
Convierta el archivo .cer en un archivo .pem:
$ openssl x509 -in aps_development.cer -inform der -out PushChatCert.pem
Convierta el archivo .p12 de la clave privada en un archivo .pem:
$ openssl pkcs12 -nocerts -out PushChatKey.pem -in PushChatKey.p12
Ingrese la contraseña de importación:
MAC verified OK
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
Primero debe ingresar la frase de contraseña para el archivo .p12 para que openssl pueda leerlo. Luego, debe ingresar una nueva frase de contraseña que se utilizará para cifrar el archivo PEM. Nuevamente para este tutorial utilicé "pushchat" como frase de contraseña PEM. Deberías elegir algo más seguro. Nota: si no ingresa una frase de contraseña PEM, openssl no mostrará un mensaje de error, pero el archivo .pem generado no tendrá la clave privada.
Finalmente, combine el certificado y la clave en un solo archivo .pem:
$ cat PushChatCert.pem PushChatKey.pem > ck.pem
Inicie la aplicación Terminal e ingrese el siguiente comando después de la solicitud
openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes
- >> Tutorial propio de Apple << - es el único conjunto de instrucciones que he encontrado. Es sencillo y puedo confirmar que funciona de manera brillante tanto en un servidor PHP de Linux como en un servidor PHP de Windows.
Puede encontrar su proceso de creación de pem de 5 pasos justo en la parte inferior de la página.
Puedes echar un vistazo aquí. Tengo el proceso detallado descrito con imágenes, desde la creación del certificado, hasta la clave de la aplicación, el perfil de aprovisionamiento y, finalmente, el pem. http://docs.moengage.com/docs/apns-certificate-pem-file
NOTA: Debe tener el rol de Agente de equipo o Administrador en App Store Connect para realizar cualquiera de estas tareas. Si no eres parte de un equipo en App Store Connect, esto probablemente no te afecte.
El envío de notificaciones push a una aplicación iOS requiere la creación de claves de cifrado. En el pasado, este era un proceso engorroso que utilizaba claves y certificados SSL. Cada certificado SSL era específico para una sola aplicación iOS. En 2016, Apple introdujo un nuevo mecanismo de clave de autenticación que es más confiable y más fácil de usar. Las nuevas claves de autenticación son más flexibles, fáciles de mantener y aplicar a más aplicaciones que iOS.
Aunque han pasado años desde que se introdujeron las claves de autenticación, no todos los servicios las admiten. FireBase y Amazon Pinpoint admiten claves de autenticación. Amazon SNS, Urban Airship, Twilio y LeanPlum no lo hacen. Muchos paquetes de software de código abierto aún no admiten claves de autenticación.
Para crear el certificado SSL requerido y exportarlo como archivo PEM que contiene claves públicas y privadas:
Si ya tiene el certificado SSL configurado para la aplicación en el sitio web del Centro de Desarrolladores de Apple, puede saltar para convertir el certificado al formato PEM. Tenga en cuenta que se encontrará con problemas si no tiene también la clave privada que se generó en la Mac que creó la solicitud de firma que se cargó en Apple.
Siga leyendo para ver cómo evitar perder el rastro de esa clave privada.
Xcode no controla certificados o claves para notificaciones push. Para crear claves y habilitar notificaciones push para una aplicación, debe ir al sitio web del Centro de desarrolladores de Apple. La sección Certificados, identificadores y perfiles de su cuenta controla los ID y certificados de la aplicación.
Para acceder a los certificados y perfiles, debe tener una membresía paga del Programa de Desarrolladores de Apple o ser parte de un Equipo que lo tenga.
Las aplicaciones que usan notificaciones push no pueden usar ID de aplicación comodín ni perfiles de aprovisionamiento. Cada aplicación requiere que configure un registro de ID de aplicación en el portal del Centro de desarrolladores de Apple para habilitar las notificaciones automáticas.
Crear certificados SSL para notificaciones push es un proceso de varias tareas. Cada tarea tiene varios pasos. Todos estos son necesarios para exportar las claves en formato P12 o PEM. Revise los pasos antes de continuar.
Para crear un certificado, deberá realizar una Solicitud de firma de certificado (CSR) en una Mac y subirla a Apple.
Más adelante, si necesita exportar este certificado como un archivo pkcs12 (también conocido como p12), deberá usar el llavero de la misma Mac . Cuando se crea la solicitud de firma, Keychain Access genera un conjunto de claves en el llavero predeterminado. Estas claves son necesarias para trabajar con el certificado que Apple creará a partir de la solicitud de firma.
Es una buena práctica tener un llavero separado específicamente para las credenciales utilizadas para el desarrollo. Si hace esto, asegúrese de que este llavero esté configurado como predeterminado antes de usar Certificate Assistant.
Al crear la Solicitud de firma de certificado, el Asistente de certificado genera dos claves de cifrado en el llavero predeterminado. Es importante hacer que el llavero de desarrollo sea el predeterminado para que las claves estén en el llavero correcto.
La creación de la solicitud de firma generó un par de claves. Antes de cargar la solicitud de firma, verifique que el llavero de desarrollo tenga las claves. Sus nombres serán los mismos que el Nombre común utilizado en la solicitud de firma.
Una vez que se crea la Solicitud de firma de certificado, cárguela al Centro de desarrolladores de Apple. Apple creará el certificado de notificación push a partir de la solicitud de firma.
Su llavero de desarrollo ahora debe mostrar el certificado push con una clave privada en Mis certificados en Acceso a llaveros:
En este punto, se debe hacer una copia de seguridad del llavero de desarrollo. Muchos equipos mantienen sus certificados push en unidades USB seguras, se comprometen a controlar la versión interna o usan una solución de respaldo como Time Machine. El llavero de desarrollo se puede compartir entre diferentes miembros del equipo porque no contiene ninguna credencial de firma de código personal.
Los archivos de llavero se encuentran en
~/Library/Keychains
.
Algunos servicios push de terceros requieren certificados en formato Privacy Enhanced Mail (PEM), mientras que otros requieren estándares de criptografía de clave pública # 12 (PKCS12 o P12). El certificado descargado de Apple se puede usar para exportar certificados en estos formatos, pero solo si ha mantenido la clave privada.
Sugeriría una solución mucho más simple. Solo usa Certifire .
Certifire es una aplicación de 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 sus credenciales de cuenta de desarrollador de Apple.
3. Elija el ID de la aplicación
4. Haga clic en el botón "Generar"
5. ¡Ya está!
Obtendrá certificados APN en formato .pem y en formato .p12. ¡Aún más, también obtendrás .pem y .p12 combinados (clave + certificado)!
¡Mucho más, también obtendrá versiones sin contraseña de todos estos certificados!
Así es como lo hice en Windows 7, después de instalar OpenSSL (el enlace va al instalador Win32, elija la última versión y no la versión ligera).
Con este método solo necesita el .cer
archivo 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 su clave privada también.
-----
COMIENCE LA CLAVE PRIVADA ----- MIIEuwIBADANBgkqhk .... etc
MIIEuwIBADANBgkqhk .... etc
MIIEuwIBADANBgkqhk .... etc
MIIEuwIBADANBgkqhk .... etc
----- FINALICE LA LLAVE PRIVADA -----
----- COMENZAR CERTIFICADO -----
AwIBAgwIBADAwIBADA .... etc
AwIBAgwIBADAwIBADA .... etc
AwIBAgwIBADAwIBADA .... etc
----- FINALIZAR CERTIFICADO -----
Eso es.
Hay una manera más fácil de crear un archivo .Pem si ya tiene un archivo pns p12 en su acceso a la cadena de claves.
Abra la terminal e ingrese el siguiente comando:
Para Devlopment openssl pkcs12 -in apns-div-cert.p12 -out apns-div-cert.pem -nodes -clcerts
Para producción openssl pkcs12 -in apns-dist-cert.p12 -out apns-dist-cert.pem -nodes -clcerts
Cambie el nombre de su archivo P12 con este nombre: apns-div-cert.p12 de lo contrario, en lugar de esto, debe ingresar su nombre de archivo. ¡¡Gracias!!
Nunca recuerdo el openssl
comando necesario para crear un .pem
archivo, 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
Póngale un nombre, por ejemplo, signpem.sh
y guárdelo en la carpeta de su usuario ( /Users/<username>
?). Después de crear el archivo, haga un chmod +x signpem.sh
para que sea ejecutable y luego puede ejecutar:
~/signpem myCertificate.p12 myCertificate.pem
Y myCertificate.pem
será creado.