developer desarrollador apple iphone ios macos push-notification apple-push-notifications

iphone - desarrollador - OSX Keychain Access-Generate CSR de la clave privada existente para APNS(Apple Push Notification Service)



apple developer id (2)

Cuando necesite crear un nuevo certificado para APNS, el "asistente" del Portal de Aprovisionamiento siempre brinda los pasos para crear una nueva CSR, lo que significa que también necesita crear una nueva clave pública / privada. Estos pueden comenzar a perder el control, por lo tanto, ¿existe alguna manera de crear una CSR (solicitud de firma de código) en Keychain Access desde una clave privada existente en lugar de tener que crear una nueva cada vez?

Gracias


Cuando acceda al Perfil de Aprovisionamiento para Activar / Configurar Notificaciones Push, lo primero que debe solicitar es un CSR (Certificado de Firma de Código).

Puede generar esto con una clave privada existente desde Keychain Access en lugar de crear una nueva.

Simplemente abra el acceso al llavero y luego desplácese y busque una CLAVE PRIVADA anterior (probablemente llamada SU NOMBRE) y luego haga clic con el botón derecho (dos dedos) en ella y seleccione Solicitar un certificado de una autoridad certificadora con "bla bla bla" .

Solo ingreso la misma dirección de correo electrónico tanto en la dirección de correo electrónico del usuario como en la dirección de correo electrónico de CA, y elijo Guardado en disco.

Luego sube eso para crear tus archivos .cer


Por lo general, puede hacer esto haciendo clic derecho en una clave privada existente en Acceso a Llaveros y eligiendo Solicitar un Certificado de una Autoridad Certificadora con "Nombre de su clave" .

Desafortunadamente, esto fallará con "El elemento especificado no se pudo encontrar en Llavero" a menos que también tenga la clave pública correspondiente en su llavero. No existe una razón técnica para esto: una solicitud de firma de certificado (CSR) se puede generar a partir de una clave privada, pero el acceso de llavero no lo comprende.

Tienes dos opciones.

Exporte la clave privada y genere la CSR manualmente

Esta es una opción rápida que generará una CSR que puedes subir a Apple.

  1. Elija la clave privada en Acceso a llavero, luego haga clic en Archivo - Exportar elementos ....
  2. Guarde el archivo en formato .p12 en algún lugar, pero recuerde la ruta. Estas instrucciones asumen que está en su directorio de inicio y se llama exported.p12 . Deje la contraseña en blanco.
  3. Abrir Terminal e ingresar:

    openssl req -new -key <(openssl pkcs12 -in ~/exported.p12 -nocerts -nodes -passin pass:"") > new.certSigningRequest

    Consulte [1] al final de esta publicación para obtener detalles sobre lo que está sucediendo.

  4. Presione Enter para cada aviso (a Apple no le importan estos valores). Cuando hayas terminado, tendrás una .certSigningRequest adecuada para cargar en el Apple Developer Portal. Cuando descargue el certificado asociado, se emparejará con la clave privada original.

  5. Elimine el archivo exported.p12 , ya que contiene material de clave privada.

Recrea la clave pública para que Keychain Access sea feliz

Esta opción es una solución a largo plazo que te permitirá generar CSR a partir de la clave original directamente desde Keychain Access. Estas instrucciones asumen que actualmente no puede usar el Acceso a Llaveros porque no tiene la versión pública correspondiente de su clave privada. Puede verificar esto yendo a la categoría "Llaves" en Acceso a Llaveros y buscando una "clave privada" y una "clave pública" con el mismo nombre.

  1. Elija la clave privada en Acceso a llavero, luego haga clic en Archivo - Exportar elementos ....
  2. Guarde el archivo en formato .p12 en algún lugar, pero recuerde la ruta. Estas instrucciones asumen que está en su directorio de inicio y se llama exported.p12 . Deje la contraseña en blanco.
  3. Abrir Terminal e ingresar:

    openssl pkcs12 -in ~/exported.p12 -nocerts -nodes | openssl rsa -pubout > public.pem

    Ver [2] al final de esta publicación para más detalles sobre lo que está sucediendo.

  4. Importe esta clave pública en Keychain Access utilizando la herramienta de security :

    security -v import public.pem -k ~/Library/Keychains/login.keychain

    Debería ver "1 clave importada".

Cambie ~/Library/Keychains/login.keychain si quiere importar esto a otro llavero. (Puede ver dónde vive cada llavero yendo a Editar - Lista de llaveros en Acceso a Llaveros).

  1. Abra el acceso de llavero y ubique la clave pública llamada "Clave pública importada". Haga doble clic en él y cambie su nombre para que sea lo mismo que su clave privada original.
  2. Eliminar public.pem y public.pem .

Ahora puede hacer clic con el botón derecho en la clave privada original y seleccionar Solicitar un certificado de una Autoridad de certificación con "Nombre de su clave" para generar una CSR.

Explicaciones

[1] Este comando, desglosado:

openssl req -new # Generate a new certificate signing request -key # Instead of generating a key, use an existing one <( # Put the output of the following command in a temporary file # (a Bash feature, not specific to OpenSSL) openssl pkcs12 -in ~/exported.p12 # Read keys from the specified PKCS12 file -nocerts # Don''t output the certificate contained in the file -nodes # Output the private key from the file -passin pass:"" # The password for the container is blank ) > new.certSigningRequest # Write the generated CSR to a file

[2] Segundo comando, desglosado:

openssl pkcs12 -in ~/exported.p12 # Read keys from the specified PKCS12 file -nocerts -nodes # Output only the private key, no certificates | openssl rsa -pubout # Compute the public key from a private key > public.pem # Write the public key to a file