chiave privata mancante nel certificato di distribuzione sul portachiavi


171

Ho il seguente problema che non sono riuscito a trovare una soluzione ovunque. Fondamentalmente, abbiamo un account sviluppatore aziendale (non aziendale) e quindi per inviare la nostra app, ho richiesto al nostro team di inviarmi il certificato di distribuzione e creare e inviarmi un profilo di provisioning di distribuzione.

Con il profilo dello sviluppatore, tutto funziona bene, ma quando ho installato il profilo cert e il provisioning, non ho visto il profilo di distribuzione su Xcode, e non ho nemmeno una chiave privata sotto il certificato dist nel portachiavi.

Qualcuno sa come risolvere questo? Ho letto in punti diff che avrò bisogno di revocare il certificato e crearne uno nuovo, ma non posso davvero farlo dal momento che abbiamo un sacco di app in azienda e non posso revocarlo per tutti.


2
A volte manca la chiave privata perché stiamo provando a creare certificati con .CSR che sono stati creati su qualsiasi altra macchina. Quindi, assicurati che il tuo file CSR dovrebbe essere creato sullo stesso computer in cui stai provando a creare e installare il certificato ... oppure potresti utilizzare .p12 di certificati per evitare questo problema
MAhipal Singh

2
Nel mio caso ho due certificati di firma identici nel mio portachiavi ... Ha risolto semplicemente l'eliminazione di uno di essi ... Per ogni evenienza ...
juanram0n

Risposte:


168

inserisci qui la descrizione dell'immagineAhh questo è un problema comune, la soluzione è semplice:

Chi ha mai creato le credenziali dello sviluppatore in origine deve andare sul portachiavi sul proprio computer e fare clic con il tasto destro del mouse sulle chiavi per privati ​​e pubblici ed esportare la chiave in un file. Quindi scarica semplicemente quel file sul tuo computer e lo apri, e verrà aggiunto al tuo portachiavi.

È necessario disporre sia della chiave privata (file .pem) sia del certificato per i profili di provisioning.


36
Per essere più specifici è il file .p12 necessario (esportato)
mkral

7
@Nirma Cosa fare se non abbiamo accesso a quel computer da cui sono state originariamente create le credenziali dello sviluppatore.
Nishad Arora,

@NishadArora Dovrai creare una nuova chiave da usare. Non c'è modo di usarlo senza la chiave privata. AFAIK
Joshua Pinter,

2
@Nirma Come crearne uno nuovo
Muju,

Se aiuta qualcuno, dopo aver installato il cert pubblico e la chiave privata (controllato in Accesso portachiavi e stava mostrando) ho anche dovuto riavviare Xcode per farlo raccogliere la chiave privata. Utilizzo di Xcode 11.6 su OSX 10.15.5.
NHol

70

Finché hai ancora accesso al mac che è stato utilizzato per generare il certificato di distribuzione originale, è molto semplice.

Basta usare l'applicazione di accesso al portachiavi di quel mac per esportare sia il certificato che la chiave privata. Selezionare sia usando MAIUSC che il comando e fare clic con il tasto destro per esportare in un file .p12.

Ho allegato uno screenshot per renderlo molto chiaro.

Sul Mac, importa quel file .p12 e sei a posto (assicurati di avere un profilo di provisioning valido).

Basta scegliere l'esportazione


55

Per aggiungere le risposte degli altri, se non hai più accesso a quella chiave privata è abbastanza semplice riavviare e funzionare:

  1. revoca il certificato attivo nel portale di provisioning
  2. creare un nuovo certificato sviluppatore (accesso portachiavi /.../ richiesta per csr ... ecc.)
  3. scarica e installa un nuovo certificato
  4. creare un nuovo profilo di provisioning per l'ID app esistente (sul portale di provisioning)
  5. scaricare e installare il nuovo profilo di provisioning e nella build, le impostazioni impostano le identità di firma del codice appropriate

13
Qui nella mia azienda c'è sempre un casino, nessuno sa in quale computer è stato creato un certo certificato. È semplicemente meglio revocare e ricreare
user2387149

1
@ user2387149 Sono qui 6 anni dopo per suggerire a CI / CD di fare questo tipo di cose e dimenticare la distribuzione tramite xCode.
Edgar Salazar,

se ho già scaricato un certificato di distribuzione, quindi l'ho revocato e lo richiedo nuovamente. devo rimuovere il vecchio certificato di distribuzione?
kafinsalim,

15

Elimina quello esistente da KeyChain, ottieni e aggiungi il file .p12 al tuo mac da dove è stato creato il certificato.

Per ottenere .p12 dal Mac di origine, vai su KeyChain, espandi il certificato, seleziona entrambi ed esporta 2 elementi. Ciò salverà il file .p12 nella tua posizione:

inserisci qui la descrizione dell'immagine


8

Nel mio caso, ho perso tutte le chiavi private nel mio portachiavi, quelle nuove sono state importate correttamente, ma non mostra anche la chiave privata. L'unica cosa che ha aiutato è stata la generazione di nuovi CertificateSigningRequest


6

Dopo aver cambiato un Mac che non è quello di origine che ha creato il certificato di disdetta, perderai la chiave privata. Basta eliminare il certificato di origine e ricrearne uno nuovo, che funzioni per me ~


5

Quando provo a caricare la build di iOS per testare il volo, viene visualizzato l'errore.

"Missing privacy key".

inserisci qui la descrizione dell'immagine

Solo 2 passaggi per correggere questo errore.

  1. Rimuovi il vecchio certificato da developer.apple.com
  2. Crea un nuovo certificato da Xcode o developer.apple.com

Il mio problema è stato risolto (sto usando Xcode 9.4.1).

Controlla, Xcode ha creato un nuovo certificato.

inserisci qui la descrizione dell'immagine


5

Per chi ha paura di ricreare il certificato di distribuzione AppStore la documentazione di Apple dice:

Importante: la ricostruzione dei certificati di sviluppo o distribuzione non influisce sulle app che hai inviato all'App Store né influisce sulla tua capacità di aggiornarli.

Ma influenza le app per l' ecosistema Apple Developer Enterprise .


4
lo fa se hai un account aziendale!
MobileMon,

Con il "sistema ecosistemico aziendale" .... Per es. stai parlando se lavori in una grande azienda e 100 sviluppatori hanno quella chiave privata per quella specifica app?
petrosmm

2

Nel menu> Visual Studio (mac)> Preferenze> Pubblicazione> Account Apple Developer> [Seleziona il tuo ID Apple]> Visualizza dettagli> Crea certificato

Per eliminare i certificati non utilizzati / non validi, visitare il sito Web: https://developer.apple.com/account/resources/certificates/list

elimina qualsiasi certificato indesiderato lì

Il prossimo è creare l'ID app (identificatori), andare al sito Web:
https://developer.apple.com/account/resources/identifiers/list

Quindi, vai al sito Web per creare i profili di provisioning:
https://developer.apple.com/account/resources/profiles/add

utilizza il certificato per eseguire il bind con l'id della tua app.

Il prossimo è scaricare i profili:
Sul tuo mac> Nel menu> Visual Studio (mac)> Preferenze> Pubblicazione> Account Apple Developer> [Seleziona il tuo ID Apple]> Visualizza dettagli> Scarica tutti i profili


1

Ho avuto accesso a quel certificato sul sito Web dello sviluppatore di Apple e dopo averlo scaricato l'ho aperto. Allo stesso modo, all'apertura ho una piccola finestra che mi chiede se volevo aggiungere il certificato al portachiavi. Basta toccare "aggiungi" e l'errore "mancante chiave privata" era sparito.


1

Sono entrato in questa situazione ("Chiave privata mancante") dopo che Xcode non è riuscito a creare un nuovo certificato di distribuzione - si è verificato un errore sconosciuto.

Quindi, ho lottato per ottenere la chiave privata o per generare un nuovo certificato. Dal gestore del certificato in Xcode ho ricevuto strani errori come "La passphrase inserita è sbagliata". Ma non mi ha nemmeno chiesto alcuna passphrase.

Ciò che mi ha aiutato è stato:

  1. Revoca tutti i certificati di distribuzione non funzionanti su developer.apple.com
  2. Riavvia il mio Mac

Successivamente, Xcode è stato in grado di creare un nuovo certificato di distribuzione e non mancava alcuna chiave privata.

Lezione imparata: riavvia il tuo Mac tanto quanto Windows;)


0

Verifica se stai utilizzando Accedi o meno per aggiungere i certificati, se stai effettuando il check-in Sistema nella parte in alto a sinistra, non saremo in grado di vederlo.

Quindi trascina e rilascia il file .cer in login, quindi controlla di essere in grado di ottenere la chiave privata o meno.


0

Solo per far luce su questo.

Dopo aver eliminato il mio certificato p12 da Keychain. Ho scaricato nuovamente il mio certificato dal portale per sviluppatori Apple.

Sono stato in grado di scaricare solo il certificato. Ma per firmare è necessaria anche la chiave privata. Quindi anche tu:

  • esporta sia la chiave privata che il certificato da Keychain per ottenerlo.

  • Carica una richiesta di firma del certificato e genera nuovi certificati

Tale certificato da solo non ha valore ai fini della firma. La mia ipotesi è che la chiave privata venga creata dal portachiavi nel momento in cui "richiedi un certificato a un'autorità di certificazione" ma non ti viene mostrato fino a quando non aggiungi il relativo certificato vincolante.

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.