Ho provato a risolvere questo problema che è stato un incubo per me durante tutta la settimana scorsa e l’ho risolto alla fine del lungo sforzo. Non era una soluzione comune.
Hai davvero bisogno di questo articolo per risolvere?
Forse.
Perché durante l’indagine, ho letto troppi forum (compresi quelli cinesi. ma non letto, solo guardato :)), articoli, voci StackOverflow ecc. ma nessuno di loro potrebbe aiutarmi. Quindi voglio creare una compilazione di correzioni per questo problema.
Prima di iniziare, puoi trovare il mio scenario nel seguente.
Ho un’applicazione Cordova e generare una build tramite Cordova CLI. Ma in generale, questo non è diverso dalla build dell’applicazione ios nativa. In realtà, funzionava correttamente fino agli aggiornamenti di MacOS e XCode.
Dopo gli aggiornamenti Mojave e XCode 10, non posso generare una build su Jenkins. Nel seguente errore è apparso continuamente. Questo è il problema dipendente dal portachiavi e dal certificato esattamente.
..........errSecInternalComponent
Command /usr/bin/codesign failed with exit code 1
Possiamo iniziare a soluzioni. Dovresti sapere che le soluzioni comuni sono all’inizio della lista.
Soluzione comune 1: Controlla il certificato valido
Devi controllare il portachiavi al certificato valido è aggiunto correttamente. Puoi farlo tramite l’app Keychain Access o il seguente comando via terminale.
security find-identity -vp codesigning
Il tuo certificato deve essere nel risultato. In caso contrario, rimuovi e aggiungi di nuovo il tuo certificato al portachiavi.
Soluzione comune 2: bloccare e sbloccare portachiavi
Un’altra soluzione più comune qui. Esegui i seguenti comandi nel terminale. Dovresti aggiungere il tuo nome e la tua password del portachiavi.
security lock-keychain temp.keychain
security unlock-keychain -p p@ssw0rd temp.keychain
In questo caso, il nome del portachiavi è “temp” e la sua password è “p@ssw0rd”. Inoltre, puoi trovare il percorso completo del portachiavi nel seguente comando e può essere usato al posto del nome del portachiavi (temp).
security list-keychains
Soluzione comune 3: Riavviare la macchina
Può essere vista come divertente ma questa soluzione è molto votata sulla maggior parte dei siti web. Se si aggiunge il nuovo certificato, riavviare la macchina può essere utile. Puoi usare il seguente comando per riavviare.
sudo reboot
Soluzione comune 4: impostare la password del portachiavi nella lista delle partizioni
Questa soluzione sta risolvendo i problemi di richiesta della password. In alcuni casi, il codesign aspetta la password del portachiavi dal prompt ma l’accesso remoto non ha questa caratteristica. Pertanto, generalmente, il processo di firma del codice è completato senza successo.
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k p@ssw0rd /Users/ceyhunkeklik/Library/Keychains/temp.keychain-db
Puoi trovare il percorso completo del portachiavi con il metodo che è stato descritto in “Soluzione comune 1”.
La soluzione del mio caso: Controllare e rimuovere le chiavi private duplicate
Nel mio caso, il portachiavi temporaneo aveva un certificato valido e la sua chiave privata. Non so perché ma il portachiavi “Sistema” aveva una chiave privata che si riferiva al mio certificato valido. Ho controllato tutte le chiavi private in tutti i portachiavi e ho rimosso tutte le chiavi duplicate dai portachiavi irrilevanti. Inoltre, ho rimosso tutti i certificati scaduti se presenti.
Immagino che questi duplicati siano apparsi a causa dell’aggiornamento di Mojave ma in realtà non so perché.
Conclusione 🙂