Pregunta

Tengo una carga derramada de los certificados '' aps_developer_identity.cer exportados desde el portal desarrollador iPhone. Todos ellos fueron creados usando la misma solicitud de firma de certificado y la misma clave (por lo tanto) privado. Si puedo exportar sólo la clave privada del llavero de Apple es entonces posible tomar la clave privada y el 'aps_developer_identity.cer' y usar openssl para crear p12 / PKCS # 12 fusionadas certificado que puedo usar en mi servidor (Windows) .

Para ser claro, sé cómo conseguir una p12 fusionada del llavero con la exportación de la clave privada y el certificado juntos, pero quiero eliminar todo el clic del ratón extra y escribiendo, si puedo.

¿Fue útil?

Solución

Me las arreglé para resolver esto, sólo necesita terminando en un script de shell y es bueno para ir. Estoy suponiendo que haya descargado y lo renombró su certificado 'apple_developer_identity.cer', aquí utilizo 'test.cer', y que también ha exportado su clave de desarrollador de su llavero, en el ejemplo mencionado más abajo 'private_dev_key.p12'.

#convert *.cer (der format) to pem
openssl x509 -in test.cer -inform DER -out test.pem -outform PEM

#convert p12 private key to pem (requires the input of a minimum 4 char password)
openssl pkcs12 -nocerts -out private_dev_key.pem -in private_dev_key.p12

# if you want remove password from the private key
openssl rsa -out private_key_noenc.pem -in private_key.pem

#take the certificate and the key (with or without password) and create a PKCS#12 format file
openssl pkcs12 -export -in test.pem -inkey private_key_noenc.pem -certfile _CertificateSigningRequest.certSigningRequest  -name "test" -out test.p12

NOTA: Si usted piensa que esto todo un poco largo aliento para lograr lo que se puede hacer con unos pocos clics del ratón y la tipificación del nombre de un archivo, y luego considerar el caso en que usted tiene 20 aplicaciones que desee habilitar para notificaciones. Cada aplicación tiene un certificado de desarrollo y producción, que expiran en 4 y 12 meses, respectivamente. Esto es un trabajo muy aburrido y propenso a errores ...

Otros consejos

trabajo impresionante aquí. Gracias por ayudar a los chicos real. He caído en mi guión exterior por debajo de eso puede ayudar a otros. Tengo varias de las claves para tratar y quería un guión también. Esta es la salida de la escritura de nombres estáticos para los archivos de salida (aunque eso sería fácil de cambiar).

Espero que ayuda a otra persona.

ejemplo de uso (suponiendo nombre del script):

$ . thisScript request_file.cer priv_key.p12 aps_dev.cer

La secuencia de comandos:

if [ $# -ne 3 ]
then
echo "Error in $0 - Invalid Argument Count"
echo "Syntax: $0 request_cer_file p12_file app_cer_file output_filename"
echo "  - request_cer_file      is the request file you sent to apple"
echo "  - p12_file          is found in your keychain (it's the private key)"
echo "  - app_cer_file          is found on App ID screen from Apple"
else

reqFile=$1
p12File=$2
cerFile=$3

certPEM='apn_cert.pem'
pKeyPEM='apn_pkey.pem'
pKeyNoEncPEM='apn_pkey_noenc.pem'
p12FileOut='apn_cert_key.p12'

# remove old
rm $certPEM
rm $pKeyPEM
rm $pKeyNoEncPEM
rm $p12FileOut

#convert *.cer (der format) to pem
openssl x509 -in $cerFile -inform DER -out $certPEM -outform PEM

#convert p12 private key to pem (requires the input of a minimum 4 char password)
openssl pkcs12 -nocerts -out $pKeyPEM -in $p12File

# if you want remove password from the private key
openssl rsa -out $pKeyNoEncPEM -in $pKeyPEM

#take the certificate and the key (with or without password) and create a PKCS#12 format file
openssl pkcs12 -export -in $certPEM -inkey $pKeyNoEncPEM -certfile $reqFile  -name "apn_identity" -out $p12FileOut

#
#   
#   If all things worked then the following should work as a test
#   openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apn_cert.pem -key apn_pkey_noenc.pem 
#
#
echo "Looks like everything was successful"
echo "Test command:"
echo "openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apn_cert.pem -key apn_pkey_noenc.pem"
echo
fi

Puede hacer que el certificado p12 / PKCS # 12 directamente en el llavero. No hay necesidad de ejecutar cualquier comando.

1.double clic en el archivo cert desarrollador / producción descargado desde el sitio dev manzana. (Se va a añadir en llavero)

2.He se supone que tiene el archivo .p12 que ha obtenido desde la exportación de clave privada

3.Go a Mi pestaña Certificados en el llavero.

basta con hacer clic en su certificado dev / prod para APN.it debe mostrar la clave privada asociada a ella

4.Right clic y el certificado de exportación en formato .p12

eso es archivo final p.12 !!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top