Errore di progettazione del codice: identità del certificato visualizzata due volte


103

Errore CodeSign: l'identità del certificato "iPhone Developer: XXXX (12345678)" appare più di una volta nel portachiavi. Lo strumento di firma del codice richiede che ce ne sia solo uno.

Quindi vado al mio portachiavi e lo elimino. Ma ottengo questo errore ogni volta che riavvio Xcode 4 e alcune app aggiungono il vecchio certificato scaduto nel portachiavi. Qualche idea sul perché e quale app?


Risposte:


99

Ho appena avuto lo stesso problema. È stato risolto. È arrivato dopo aver inviato un'app e installato alcuni certificati per firmare l'app.

Correzione rapida: apri ACCESSO PORTACHIAVI> fai clic su I MIEI CERTIFICATI> lì probabilmente vedrai iPhone Developer:. Probabilmente lo vedrai DUE VOLTE! Seleziona quello con la prima data di scadenza, fai clic con il tasto destro e seleziona ELIMINA.

Riavvia Xcode se non l'hai fatto. Funziona adesso. :)

Codifica felice.


27
Ancora un passo! È necessario aprire l'Organizer in XCode e aggiornare i profili di provisioning dopo aver eliminato il certificato duplicato.
Meekohi

@Meekohi cosa intendi per "aggiornare" i miei profili di provisioning? Grazie!
abw333

7
Il riavvio di Xcode ha risolto lo stesso problema dopo aver eliminato il vecchio certificato.
Maxim Mikheev

Su Xcode 4 (ho 4.4.1), ho dovuto eliminare TUTTI i profili di provisioning associati al vecchio certificato. Quindi ho riavviato Xcode e il vecchio certificato ha smesso (magicamente) di apparire sul portachiavi.
Roberto

3
Ha funzionato per me con un'aggiunta (sto usando Xcode 4.6.3). Ho cancellato i certificati scaduti (o che scadranno più presto), quindi ho riavviato Xcode e ho ancora avuto il problema: i vecchi certificati in qualche modo sono riapparsi in KeyChain Access. Quindi, ho riavviato Xcode ma prima di selezionare il mio progetto da aprire, sono tornato a KeyChain Access e il vecchio certificato era di nuovo lì, quindi l'ho cancellato. Quindi ho aperto il mio progetto (nell'Xcode già in esecuzione) e tutto è andato bene - sono stato in grado di costruire di nuovo.
Ed Sinek

71

Penso di aver capito perché la semplice eliminazione non funziona. Poiché il certificato dev è ancora memorizzato nel profilo di fornitura, quando chiudo / riapro l'Xcode dopo aver eliminato il certificato nel portachiavi, ho visto il vecchio certificato tornare. Quindi lo elimino di nuovo. Ha funzionato.

La semplice soluzione per eliminare il profilo non ha funzionato per me.

Soluzione che ha funzionato nel mio caso:

  1. Esci da Xcode
  2. Se l'accesso al portachiavi è aperto, tienilo aperto.
  3. Avvia Xcode ora.
  4. Verifica che il certificato di cui Xcode si lamentava verrà nuovamente aggiunto al portachiavi all'avvio dalla sua cache.
  5. Vai avanti e cancellalo.
  6. Compila e codifica felice.

3
Ho provato tutte le soluzioni di cui sopra e questa ha funzionato. Sembra che ci siano più cause / soluzioni.
Nathan Hangen

+1: Posso confermare che XCode mantiene effettivamente una "cache" dei certificati e li aggiunge al suo lancio - è terribile che funzioni in questo modo! Causa tanti problemi! Peccato per te Apple, questo ha causato ore di tempo perso a causa della lotta con questo!
JRG-Developer

10

Ho appena passato un bel po 'di tempo a lottare con lo stesso problema. Dopo tutti i tentativi di risolverlo, finalmente mi sono reso conto che si tratta di un bug in Xcode. Questo post mi ha dato un indizio per risolverlo: i certificati appaiono magicamente nel tuo portachiavi

Nel mio caso, la chiave privata corrispondente era nel portachiavi di sistema e aveva solo il mio nome (difficile dire che fosse per il provisioning). Dovevo:

  • Sposta la chiave privata associata nel portachiavi di "accesso"
  • Riavviato Xcode e ho notato che la chiave privata ora veniva visualizzata come associata (conferma a cosa serviva)
  • Elimina il certificato e la chiave privata
  • Riavvia Xcode e poof! Ha smesso di aggiungere il mio vecchio certificato

Un'osservazione interessante è che quando si elimina il certificato, non viene eliminata la chiave privata associata. Visivamente, mostra la chiave privata sotto il certificato. Non farti ingannare.

In bocca al lupo!


l'eliminazione della chiave privata ha funzionato anche per me - ultimo aggiornamento xcode ottobre 2012 mountain lion
ina



3

Ho lo stesso problema con xcode45-DP1. questo funziona per me:

  1. rimuovere tutti i certificati relativi al tuo account dal portachiavi. ESCI portachiavi

  2. rimuovere tutti i profili di provisioning relativi al tuo account da xcode: organizer: device: Library: profili di provisioning. ESCI da xcode

  3. revoca il tuo certificato, rigeneralo e scaricalo sulla tua macchina di compilazione

  4. prima di scaricare il profilo di provisioning, fai clic su Modifica accanto al pulsante di download per assicurarti che il tuo nome sia selezionato.

  5. Quindi scarica il profilo di provisioning

  6. fare doppio clic sul certificato per installarlo sul portachiavi

  7. trascina il profilo di provisioning su xcode: organizer: device: Library: provisioning profiles

  8. non fare clic sul pulsante di aggiornamento da xcode.

  9. fai la build.


3

La risposta è qui

rimuovi tutti i miei vecchi profili di provisioning utilizzando il vecchio certificato con Organizer, quindi esci da XCode, rimuovi il vecchio certificato dal portachiavi e riavvia XCode.

sembra che xcode manterrà i certificati in giro quando si hanno riferimenti a nei profili di provisioning


1

Avevo problemi con i certificati zombi che venivano ripopolati nel mio portachiavi e l'identità del certificato veniva visualizzata due volte. La semplice eliminazione del certificato duplicato non ha funzionato.

In Xcode, quando ho guardato il mio Code Signing nel target, mi sono ricordato di avere un profilo di distribuzione diverso nelle build "Ad Hoc" rispetto alle build "Release".

Quando ho generato un nuovo certificato, ho scaricato un nuovo profilo solo per le build ad hoc e non per le build di rilascio.

Xcode era appeso al certificato per entrambi i profili e Xcode stava quindi causando i certificati duplicati ... perché ho dimenticato di aggiornare correttamente i miei profili.

Assicurati di aggiornare TUTTI i tuoi profili di provisioning al nuovo certificato e modifica TUTTI i profili contemporaneamente in Xcode.

Assicurati di aggiornare tutti i tuoi profili di provisioning con il nuovo certificato, altrimenti Xcode proverà a mettere il certificato per ENTRAMBI i profili nel portachiavi ... causando l'errore duplicato!


1

Ho avuto questo problema e ho letto ogni informazione al riguardo, finalmente ho trovato la soluzione da solo. Quello che le persone non hanno menzionato è che PRIMA di pulire i certificati in Xcode Organizer e PRIMA di pulire le chiavi scadute nel tuo portachiavi, devi assicurarti di non avere certificati scaduti nel Portale di provisioning . Se hai anche un solo certificato scaduto per una vecchia app che utilizzava il vecchio certificato per sviluppatori, Xcode lo inserirà nel suo organizzatore con la prima build e da lì andrà al tuo portachiavi e causerà un duplicato.


1

Nel mio caso, la "cache" che Xcode stava guardando era un dispositivo iOS collegato. Per determinare se questo è il problema per te:

  1. Disconnetti tutti i dispositivi iOS
  2. Elimina il certificato offensivo e la chiave privata da Accesso Portachiavi
  3. Riavvia Xcode
  4. Controlla Accesso Portachiavi: nel mio caso il duplicato NON è stato ricreato a questo punto
  5. Ricollega il dispositivo iOS
  6. Riavvia di nuovo Xcode
  7. Controlla Accesso Portachiavi: nel mio caso il duplicato è stato ricreato a questo punto

Se questa è la causa principale per te, puoi aggirare il problema assicurandoti di scollegare i dispositivi iOS prima di avviare Xcode.


0

La semplice eliminazione del certificato ridondante non ha funzionato per me. Sembra che ogni volta che viene chiamato xcodebuild, si sta "ricreando" il certificato nel portachiavi da una cache da qualche parte ... stesso problema di avi Ho creato un hack / fix per esso, ho provato a trovare dove il file veniva memorizzato nella cache e cancellarlo, ma non ha avuto fortuna. Alla fine, quello che ha funzionato per me (un po 'un trucco, ma hey, cos'altro puoi fare), è stato capire qual è il numero del certificato e rimuoverlo manualmente dal portachiavi subito dopo aver chiamato xcodebuild. Per prima cosa, vai alla tua directory / usr / bin / (o qualsiasi directory abbia il tuo file xcodebuild, prova which xcodebuild) ed esegui il seguente comando:

sudo mv xcodebuild xcodebuild_actual

Quindi crea un file usando il tuo editor preferito (non dimenticare di sudo) con il seguente codice:

xcodebuild_actual $* &
echo "xcodebuild started, waiting to wipe certificate, 10 seconds"
sleep 2
echo "Wiping Certificate..."
sudo security -v delete-certificate -t -Z 407629F811D52C0BB7AD31BBB18DCB496354B05E

Nota: dovrai modificare il tuo file sudoers per avere accesso per eseguire questo comando specifico senza dover inserire una password.

Sostituisci l'identità esadecimale dopo -Z sopra con l'identità esadecimale del certificato zombi incriminato. Infine, assicurati che il file xcodebuild sia eseguibile:

sudo chmod 755 xcodebuild 

È ora possibile aprire il portachiavi ed eseguire il comando di compilazione e osservare come il certificato zombi incriminato viene resuscitato e quindi sommariamente sparato prima che diventi un problema per la firma del codice. Speriamo che Apple riesca a trovare una soluzione reale per questo.


0

Nel mio caso l'eliminazione dei certificati non ha funzionato. XCode 4 sembra memorizzarli o ripristinarli. Il trucco che alla fine ha funzionato per me è stato quello di avere portachiavi e xcode in esecuzione. Quindi nel portachiavi trascina i miei 2 certificati (dev + dist) da "login" a "system". Quindi i duplicati sono riapparsi magicamente e sono stato in grado di eliminarli, quindi ho trascinato i certificati di nuovo su 'login'


0

È molto semplice, esporta il certificato corretto sul tuo desktop. Elimina quel certificato nel portachiavi. Prova a costruire il sorgente con messaggio di errore (non avere certificato ..) Quindi importa di nuovo il certificato. => Successo!


0

Ho appena cancellato una delle chiavi private nel mio portachiavi per il certificato che non mi serve più.

Anche se il certificato riappare ma la chiave privata non ricompare. Ora controlla i certificati validi e apparirà solo un certificato e gli altri certificati la cui chiave privata è stata eliminata non saranno più visualizzati sotto certificati validi.

Penso che questo sia il modo più semplice per risolvere questo problema.


0

Una volta ho avuto a che fare con lo stesso problema. E l'ho risolto rimuovendo il profilo di provisioning inutilizzato dalla scheda Organizer in xcode. In realtà Keychain otterrà quel certificato da questo profilo di provisioning che è un certificato scaduto o il certificato compilato per revocato.

Quindi devi solo eliminare questo profilo di provisioning dalla scheda Organizer. Organizer si trova sul pulsante in alto a destra di xcode Aprilo e quindi in Organizer rimuovi i profili di provisioning che non utilizzi.

Ecco lo screenshot,

inserisci qui la descrizione dell'immagine

E non dimenticare di rimuovere il certificato aggiuntivo dal portachiavi, ma dopo di che quei certificati non vengono più visualizzati.

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.