Error al intentar obtener un certificado: el elemento especificado no se pudo encontrar en el llavero

110

Tenía un problema con la codificación de mis aplicaciones, así que eliminé todas las claves del llavero. Luego fui a Certificate Assistant => Solicitar un certificado de una Autoridad de Certificación (para crear CSR para un nuevo certificado).

Así que ingrese mi dirección de correo electrónico y esto es lo que obtengo:

El elemento especificado no se pudo encontrar en el llavero.

¿Qué estoy haciendo mal?

PD: Cuando intento crear una autoridad de certificación , aparece el mismo error.

Sergey
fuente
1
Estoy teniendo el mismo error. Por favor, ¿puede elaborar su respuesta o alguien que sepa cómo hacerlo?
Iducool
9
Reiniciar el acceso a KeyChain funcionó para mí :)
Mohit Padalia
1
Para aquellos que reutilizan una clave privada para un segundo propósito de firma (por ejemplo, installer+ application), consulte los pasos del manual de @ toland-hon a continuación, que usan OpenSSL en la línea de comandos para solucionar la Keychain Accessaplicación defectuosa . Los pasos a continuación que dirigen a los usuarios a la Certificatesección de Keychain Accesstodavía NO funcionan cuando se reutiliza una clave privada para un propósito secundario. La RSC manual a través de openssles una solución viable.
tresf

Respuestas:

300

Lo resolví. Asegúrese de estar en la sección "Certificados" y de seleccionar "Autoridad de certificación de relaciones con desarrolladores de Apple en todo el mundo" antes de solicitar un certificado.

Francesco
fuente
7
Usted es un héroe. Estaba tirando de mi cabello cuando todas las otras respuestas no estaban resolviendo el problema.
BFeher
23
Oh dios mio Apple WTF? ¡Gracias John!
MattD
2
Esto es una locura. :(: P lo que el falooda ??? En serio, es necesario que haya alguna alerta fácil de usar o un mensaje.
Adil Soomro
2
No consideré esta respuesta porque pensé que era una locura. pero realmente funciona. hay algunas partes sueltas del ecosistema de la manzana que son una locura :)
alex
2
Esto me lo resolvió. Tener mi clave privada anterior seleccionada no funcionó, ni tampoco tener una clave seleccionada. Qué oscuro ...
zai chang
46

Keychain Access no le permitirá solicitar un certificado de una autoridad de certificación con " identidad " ... a menos que tenga la clave privada y la clave pública de identidad en su llavero. Me encontré con esto cuando solo tenía la clave privada y no la clave pública correspondiente.

Puede crear la clave pública a partir de la clave privada e importarla a su llavero mediante el procedimiento descrito en Perdí mi clave pública. ¿Puedo recuperarlo de una clave privada?

Una vez que importé la clave pública, pude usar el comando Solicitar un certificado de una autoridad de certificación con " identidad " ... sin activar el error El elemento especificado no se pudo encontrar en el llavero .

Gene Goykhman
fuente
Tienes razón, ¿cómo se puede crear el certificado sin la clave pública :)
onmyway133
29

Vaya a la sección " Certificados " y seleccione " Autoridad de certificación de relaciones con desarrolladores de Apple en todo el mundo ". antes de solicitar un certificado.

ingrese la descripción de la imagen aquí

atereshkov
fuente
21

Está pidiendo (quizás accidentalmente) a Keychain Access que genere una Solicitud de firma de certificado utilizando una clave existente . Si se selecciona una clave cuando ingresa a Acceso a llaveros - Asistente de certificado menú , las opciones presentadas serán para esa clave seleccionada.

Elija un elemento que no sea clave en su llavero (como una contraseña guardada) y vaya a Acceso al llavero - Asistente de certificado nuevamente para generar el CSR normalmente.

Phil Calvin
fuente
Parece que OS X ahora tiene por defecto el primer elemento que se selecciona ahora. Si simplemente elige un llavero diferente (es decir, Sistema) cuando lo genera, debería solucionar el problema.
James Parker
Mierda, nunca lo hubiera imaginado. Habla sobre el mal diseño de la interfaz de usuario ...
d512
9

Incluso yo estaba teniendo este problema. Resolví esto seleccionando en All Itemslugar de Keysen el Categoriespanel y luego tratando de crear el Certificado.

Prueba esto, seguramente funcionará.

naddy19
fuente
Mejor reiniciar
knight2016
7

Esto me estaba pasando. Noté que la opción de menú para crear la solicitud de certificado había cambiado de

Solicitar un certificado de una autoridad certificadora ...

a

Solicite un certificado de una autoridad de certificación con "Mi nombre" ...

Marque esta opción de menú

Estoy en un dominio en el trabajo, así que me desconecté, entré y salí como otro usuario, luego volví a iniciar sesión. Después de eso, el menú apareció como se esperaba y este error desapareció

Damo
fuente
4
Esta es una característica de Keychain Access. Si tiene una clave seleccionada cuando vaya a este menú, le ofrecerá usar la clave para crear la Solicitud de firma de certificado. (En este caso, las opciones son las mismas que cuando se hace clic con el botón derecho en una tecla). Al cerrar la sesión, se anulará la selección de la clave.
Phil Calvin
No tiene que cerrar sesión y luego iniciar sesión. simplemente salga del llavero y ábralo nuevamente ahora no seleccione ninguna entrada en la lista y vaya al menú para solicitar
M.Shuaib Imran
7

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

  1. Haga clic derecho en la clave privada
  2. Exportar
  3. Asegúrese de que esté seleccionado el formato de archivo p12
  4. Salvar
  5. Ingrese una contraseña (opcional)
  6. Permitir el acceso a la clave de exportación
  7. Abra Terminal y vaya al directorio exportado
  8. 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, [email protected])
  • 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.

Toland Hon
fuente
Mismo problema. Quería mantener la misma clave privada (es decir, originalmente utilizada developerID_installer.cerpero desea reutilizarla developerID_application.cer). Las instrucciones de Apple son malas porque te obligan a usar el buggy Keychain Accesso peor, XCode. Me encontré con esta solución anterior sin darme cuenta. Votar a favor el tuyo porque es exactamente lo que terminé haciendo.
tresf
4

yo tengo el mismo problema. Puedo crear CSR y luego no crearlo y se obtiene el mismo error.

entonces puedo buscar y encontrar una solución pero no resolver.

en algún momento puedo resolverlo.

mi acceso al llavero a través de la primera caja de tiempo CSR. por lo que mi acceso al llavero está bloqueado.

abrir> acceso al llavero> parte superior de la pantalla de acceso al llavero "Haga clic para desbloquear el llavero del sistema"

Haga clic en eso y desbloquee el llavero del sistema, luego cree el archivo CSR y luego No obtenga este error.

Sanjay Damor
fuente
2

Elegir la clave privada en el llavero ocurrirá el problema. "el elemento especificado no se pudo encontrar en el llavero" Mientras eliges la clave pública, resuélvelo. "Su solicitud de certificado se ha creado en el disco".

Zgpeace
fuente
1

De acuerdo, el nombre que muestra muestra el elemento que resaltó en la ventana principal de Llavero (si selecciona un elemento diferente aquí, también verá el elemento del menú cambiar con él). Si va a la sección de categoría a la izquierda y selecciona mis certificados, por ejemplo, y vuelve al elemento del menú de asistente de certificado, se ve / actúa como si estuviera acostumbrado. ¡Espero que esto ayude!

Cedrick
fuente
1

Después de revocar todos los certificados que tenía, descubrí que el problema estaba en mi yubikey . Se estaba interponiendo en la forma de firmar la aplicación. Después de que lo quité, problema resuelto.

Este hilo del foro me ayudó: https://forums.developer.apple.com/thread/106938

Adriana Pineda
fuente
¡Gracias! Este también era mi problema. Puede que este no sea el problema para la mayoría de las personas, pero cualquiera que tenga un Yubikey debería intentar sacarlo y reconstruirlo.
Philihp Busby
0

Si ha seleccionado cualquier clave privada en el llavero mientras generaba una nueva CSR, se le indicará con referencia a esa clave. Solo asegúrese de haber seleccionado cualquier elemento de clave que no sea privada para generar una nueva CSR que será útil para crear una nueva.

Por ejemplo, mantenga seleccionado en la herramienta de llavero "Clave pública" o cualquier certificado existente que no tenga una clave privada alineada. Ahora siga el flujo "Solicitar certificado a la autoridad certificadora".

Ameer
fuente
-14

¡Resuelto! Tuve que cambiar "Certificado de usuario" a "Firma de código".

Sergey
fuente
¿Qué quiere decir con cambiar "Certificado de usuario" a "Firma de código"?
user500
Sí, por favor, también me encuentro con el mismo problema, ¿qué quieres decir con "firma de código? ¿Dónde está eso?
Habitante