Mi objetivo era crear una CSR (solicitud de firma de certificado) utilizando mi clave privada existente para enviarla a Apple para generar un nuevo certificado de distribución de iPhone. Me aseguré de que Certificados fuera la categoría seleccionada a la izquierda. Intenté hacer clic con el botón derecho en mi clave privada y hacer clic en Solicitar un certificado de una autoridad de certificación con clave privada importada y obtenía el siguiente error cuando intentaba guardarla.
El elemento especificado no se pudo encontrar en el llavero.
También recibí el mismo error cuando pasé por el menú de archivo: Acceso a llaveros > Asistente de certificado
Lo que he recopilado de otras fuentes de Internet es que Keychain Access NO le permite crear una nueva CSR si importó la clave privada, solo si creó la clave localmente desde la herramienta.
Lo que terminé haciendo en su lugar fue exportar la clave privada y usar openssl para generar la nueva CSR, que Apple aceptó, y ahora hace referencia a la nueva clave privada importada.
Exportando la clave privada
- Haga clic derecho en la clave privada
- Exportar
- Asegúrese de que esté seleccionado el formato de archivo p12
- Salvar
- Ingrese una contraseña (opcional)
- Permitir el acceso a la clave de exportación
- Abra Terminal y vaya al directorio exportado
- Extraer la clave del contenedor p12
Tenga cuidado porque la clave privada .pem ya no está protegida con contraseña)
$ openssl pkcs12 -in Certificates.p12 -out Certificates.pem -nodes
Enter Import Password: ********************
MAC verified OK
Creación de una nueva CSR con clave privada exportada
$ openssl req -out Certificates.csr -key Certificates.pem -new
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:.
State or Province Name (full name) [Some-State]:.
Locality Name (eg, city) []:.
Organization Name (eg, company) [Internet Widgits Pty Ltd]:.
Organizational Unit Name (eg, section) []:.
Common Name (e.g. server FQDN or YOUR name) []:John Doe Dev Key
Email Address []:thon@example.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Un par de cosas a tener en cuenta:
- Entra. cuando desee que el campo esté en blanco, o el valor predeterminado incluirá lo que esté entre corchetes [].
- Common Name (CN) debe ser el nombre de su clave privada (por ejemplo, John Doe Dev Key)
- La dirección de correo electrónico debe ser su dirección de correo electrónico (por ejemplo, thon@example.com)
- Todo lo demás debe estar en blanco
Verifica tu CSR
$ openssl req -noout -text -in Certificates.csr
Certificate Request:
Data:
Version: 0 (0x0)
Subject: CN=John Doe Dev Key/emailAddress=thon@example.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (2048 bit)
Modulus (2048 bit):
…
Exponent: 65537 (0x10001)
Attributes:
a0:00
Signature Algorithm: sha1WithRSAEncryption
…
Lo que debería preocuparle es el tema línea y verifique que sea correcto.
Ahora todo lo que necesita hacer es enviarlo a Apple, esperar a que se genere el certificado y luego instalarlo. Después de importar su certificado recién generado, verá que hará referencia al certificado anterior que exportó anteriormente.