Errore durante il tentativo di ottenere un certificato: non è stato possibile trovare l'elemento specificato nel portachiavi


111

Avevo un problema con la firma del codice delle mie app, quindi ho eliminato tutte le chiavi dal portachiavi. Quindi sono andato a Certificate Assistant => Richiedi un certificato da un'autorità di certificazione (per creare CSR per un nuovo certificato).

Quindi inserisci il mio indirizzo email ed ecco cosa ricevo:

L'elemento specificato non è stato trovato nel portachiavi.

Che cosa sto facendo di sbagliato?

PS Quando provo a creare un'autorità di certificazione , ottengo lo stesso errore.


1
Ricevo lo stesso errore. Per favore, puoi elaborare la tua risposta o qualcuno che sappia come farlo
Iducool

9
Il riavvio di KeyChain Access ha funzionato per me :)
Mohit Padalia

1
Per coloro che riutilizzano una chiave privata per un secondo scopo di firma (ad esempio installer+ application), vedere i passaggi manuali di @ toland-hon di seguito che utilizzano OpenSSL sulla riga di comando per aggirare l' Keychain Accessapplicazione difettosa . I passaggi seguenti che indirizzano gli utenti alla Certificatesezione di Keychain AccessNON funzionano ancora quando si riutilizza una chiave privata per uno scopo secondario. La CSR manuale tramite opensslè una soluzione possibile.
tresf

Risposte:


302

L'ho risolto. Assicurati di essere nella sezione "Certificati" e di selezionare "Autorità di certificazione per le relazioni con gli sviluppatori nel mondo Apple" prima di richiedere un certificato.


7
Sei un eroe. Mi stavo strappando i capelli quando tutte le altre risposte non risolvevano il problema.
BFeher

23
Oh mio dio Apple WTF? Grazie John!
MattD

2
Questo è folle. :(: P what the falooda ??? Seriamente, ci deve essere un avviso o un messaggio di facile utilizzo.
Adil Soomro

2
Non ho considerato questa risposta perché pensavo fosse pazza. ma funziona davvero. ci sono alcune parti sciolte dell'ecosistema delle mele che sono semplicemente pazze :)
alex

2
Questo l'ha risolto per me. La selezione della vecchia chiave privata non funzionava, né la mancanza di una chiave selezionata. Che oscuro ...
zai chang

46

Accesso Portachiavi non ti consente di richiedere un certificato da un'autorità di certificazione con " identità " ... se non si ha sia la chiave privata e la chiave pubblica per l'identità nel portachiavi. Mi sono imbattuto in questo quando avevo solo la chiave privata e non la chiave pubblica corrispondente.

Puoi creare la chiave pubblica dalla chiave privata e importarla nel tuo portachiavi utilizzando la procedura descritta in Ho perso la mia chiave pubblica. Posso recuperarlo da una chiave privata?

Una volta importata la chiave pubblica, sono stato in grado di utilizzare il comando Richiedi un certificato da un'autorità di certificazione con " identità " ... senza attivare l' errore Impossibile trovare l'elemento specificato nel portachiavi .


Hai ragione, come è possibile creare il certificato senza la chiave pubblica :)
onmyway133

29

Vai alla sezione " Certificati " e seleziona " Autorità di certificazione per le relazioni con gli sviluppatori nel mondo Apple " prima di richiedere un certificato.

inserisci qui la descrizione dell'immagine


21

Stai (forse accidentalmente) chiedendo ad Accesso Portachiavi di generare una richiesta di firma del certificato utilizzando una chiave esistente . Se viene selezionata una chiave quando si accede al file accede al menu Accesso portachiavi - Assistente certificato , le opzioni presentate saranno per quella chiave selezionata.

Scegli un elemento non chiave nel tuo portachiavi (come una password salvata) e vai di nuovo su Accesso portachiavi - Assistente certificato per generare normalmente la CSR.


Sembra che OS X ora utilizzi per impostazione predefinita il primo elemento selezionato. Se scegli solo un portachiavi diverso (cioè Sistema) quando lo generi, il problema dovrebbe essere risolto.
James Parker,

Santo cielo, non l'avrei mai ospitato. Parliamo di un cattivo design dell'interfaccia utente ...
d512

9

Anche io stavo ricevendo questo problema. Ho risolto questo problema selezionando All Itemsinvece diKeys nelCategories riquadro e quindi provando a creare il certificato.

Prova questo, funzionerà sicuramente.


Meglio riavviare
knight2016

7

Questo mi stava accadendo ho notato che l'opzione di menu per la creazione della richiesta di certificato era cambiata da

Richiedi un certificato da un'autorità di certificazione ...

per

Richiedi un certificato da un'autorità di certificazione con "Il mio nome" ...

Controlla questa opzione di menu

Sono su un dominio al lavoro, quindi mi sono disconnesso, loggato e disconnesso come un altro utente, quindi ho effettuato nuovamente l'accesso. Dopodiché il menu è apparso come previsto e questo errore è scomparso


4
Questa è una funzionalità di Accesso portachiavi. Se è stata selezionata una chiave quando si accede a questo menu, verrà offerto di utilizzare la chiave per creare la richiesta di firma del certificato. (In questo caso, le opzioni sono le stesse di quando si fa clic con il pulsante destro del mouse). La disconnessione deselezionerà la chiave.
Phil Calvin

Non è necessario disconnettersi e quindi accedere. basta chiudere il portachiavi e aprirlo di nuovo ora non selezionare nessuna voce nell'elenco e andare al menu per richiedere
M.Shuaib Imran

7

Il mio obiettivo era creare una CSR (richiesta di firma del certificato) utilizzando la mia chiave privata esistente da inviare ad Apple per generare un nuovo certificato di distribuzione per iPhone. Mi sono assicurato che i certificati fossero la categoria selezionata a sinistra. Ho provato a fare clic con il pulsante destro del mouse sulla mia chiave privata e fare clic su Richiedi un certificato da un'autorità di certificazione con chiave privata importata e riceverei il seguente errore quando provo a salvarlo.

L'elemento specificato non è stato trovato nel portachiavi.

Ho anche ricevuto lo stesso errore quando sono passato attraverso il menu file: Accesso portachiavi > Assistente certificato

Quello che ho raccolto da altre fonti Internet è che Keychain Access NON ti consente di creare un nuovo CSR se hai importato la chiave privata, solo se hai creato la chiave localmente dallo strumento.

Quello che ho finito per fare invece è stato esportare la chiave privata e utilizzare openssl per generare il nuovo CSR, che Apple ha accettato e ora fa riferimento alla nuova chiave privata importata.

Esportazione della chiave privata

  1. Fare clic con il tasto destro sulla chiave privata
  2. Esportare
  3. Assicurati che il formato di file p12 sia selezionato
  4. Salva
  5. Immettere una password (opzionale)
  6. Consenti l'accesso alla chiave di esportazione
  7. Apri Terminale e vai alla directory esportata
  8. Estrai la chiave dal contenitore p12

Fai attenzione perché la chiave privata .pem non è più protetta da password)

$ openssl pkcs12 -in Certificates.p12 -out Certificates.pem -nodes
Enter Import Password: ********************
MAC verified OK

Creazione di una nuova CSR con chiave privata esportata

$ 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 paio di cose da notare:

  • Accedere . quando vuoi che il campo sia vuoto, o l'impostazione predefinita includerà tutto ciò che è tra parentesi [].
  • Common Name (CN) dovrebbe essere il nome della tua chiave privata (ad esempio, John Doe Dev Key)
  • L'indirizzo e-mail dovrebbe essere il tuo indirizzo e-mail (ad es. Thon@example.com)
  • Tutto il resto dovrebbe essere vuoto

Verifica la tua 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
        

Ciò di cui dovresti preoccuparti è nella riga dell'oggetto e verifica che sia corretto.

Ora tutto ciò che devi fare è inviarlo ad Apple, attendere che il certificato venga generato e quindi installarlo. Dopo aver importato il certificato appena generato, vedrai che farà riferimento al vecchio certificato che hai esportato sopra.


Stesso problema. Volevo mantenere la stessa chiave privata (cioè originariamente usata per developerID_installer.cerma voglio riutilizzarla per developerID_application.cer). Le istruzioni di Apple sono cattive perché ti costringono a usare il buggy Keychain Accesso, peggio, XCode. Mi sono imbattuto in questa soluzione di cui sopra piuttosto inavvertitamente. Voto tuo perché è esattamente quello che ho finito per fare.
tresf

4

ho lo stesso problema. posso creare CSR quindi non crearlo e lo stesso errore sta ottenendo.

quindi posso cercare e trovare una soluzione ma non risolverlo.

un po 'di tempo posso risolverlo.

il mio accesso al portachiavi tramite la prima cassa del tempo CSR. quindi il mio accesso al portachiavi è bloccato.

apri> accesso portachiavi> parte superiore della visualizzazione di accesso portachiavi "Fai clic per sbloccare il portachiavi di sistema"

Fare clic su questo e sbloccare il portachiavi di sistema, quindi creare il file CSR, quindi non ricevere questo errore.


2

Scegliendo la chiave privata nel portachiavi si verificherà il problema. "l'elemento specificato non è stato trovato nel portachiavi" Mentre scegli la chiave pubblica risolvilo. "La tua richiesta di certificato è stata creata su disco."


1

Va bene il nome che mostra mostra l'elemento che hai evidenziato nella finestra principale del Portachiavi (se selezioni un elemento diverso qui vedrai anche la voce di menu cambiare con esso). Se vai alla sezione della categoria a sinistra e selezioni i miei certificati, ad esempio, e torni alla voce di menu Assistente certificati, sembra / si comporta come a cui sei abituato. Spero che questo ti aiuti!


1

Dopo aver revocato ogni certificato che avevo, ho capito che il problema era con il mio yubikey . Stava intralciando la firma dell'app. Dopo averlo rimosso, il problema è stato risolto.

Questo thread del forum mi ha aiutato: https://forums.developer.apple.com/thread/106938


Grazie! Questo era anche il mio problema. Questo potrebbe non essere il problema per la maggior parte delle persone, ma chiunque abbia uno Yubikey dovrebbe provare a tirarlo fuori e ricostruire.
Philihp Busby

0

Se hai selezionato una chiave privata nel portachiavi durante la generazione di un nuovo CSR, ti verrà richiesto con riferimento a quella chiave. Assicurati solo di aver selezionato qualsiasi elemento di chiave non privata per generare nuovo CSR che sarà utile per crearne uno nuovo.

Ad esempio, tieni selezionato nello strumento portachiavi "Chiave pubblica" o qualsiasi certificato esistente a cui non è allineata la chiave privata. Ora segui il flusso "Richiedi certificato dall'autorità di certificazione".



-14

Risolto! Ho dovuto cambiare "Certificato utente" in "Firma codice".


Cosa intendi per cambiare "Certificato utente" in "Firma codice"?
user500

Sì grazie, anch'io incappo nello stesso problema, cosa intendi con "firma del codice?
Dov'è
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.