2014-05-08 7 views
16

Nel tentativo di creare un progetto iOS (in XCode), ho bisogno di importare le chiavi pubbliche e private del mio collega per la firma del codice identità, ma non sono in grado di farlo perché ho un errore in Accesso Portachiavi che diceImpossibile importare le chiavi pubbliche o private con codice di accesso tramite Keychain (Mac OS X Mavericks)

DETTAGLI pieno "è verificato un errore Impossibile importare una voce/Il contenuto di questo articolo non possono essere recuperati..":

Ho due chiavi dal computer del mio collega, le ho esportate dal suo portachiavi come due file:

Roomer Inc.p12 (la chiave privata y)

Roomer Inc.pem (la chiave pubblica)

Quando ha esportato questi, lasciò la password vuota (anche se abbiamo provato anche con una password di "test" e ottenuto gli stessi risultati).

Quando si fa doppio clic Roomer Inc.p12 (per la chiave privata), si apre in Accesso Portachiavi e mi promts di scegliere il portachiavi ("login" è selezionata per impostazione predefinita)

faccio clic su "Aggiungi" e poi mi viene richiesto di inserire la password al portachiavi (che lascio in bianco)

Successivo vedo sempre questo messaggio nella tua accesso portachiavi:

screenshot of error

Tuttavia, nonostante questo messaggio appare, quando si fa clic OK, io s ee una nuova chiave privata per "Roomer Inc". Si noti che questa voce è una chiave privata nella catena di accesso "login" come prevedibile, ma non ha data di scadenza (dovrebbe?)

Successivamente, per il file Roomer Inc.pem (la chiave pubblica) I am chiesto di scegliere il portachiavi ("login") e faccio clic su Aggiungi

Poi, ho anche il "Errore si è verificato. Impossibile importare un oggetto./Il contenuto di questo oggetto non può essere recuperato" messaggio per il pubblico chiave pure. In questo caso tuttavia (a differenza della chiave privata), non vedo alcuna voce corrispondente a ciò che ho appena aggiunto.

Quindi, sembra che la voce della chiave privata possa essere o non essere corretta (non ho modo di verificare) e la chiave pubblica per Roomer non può essere installata nel portachiavi senza questo messaggio di errore. Si prega di notare che ho anche provato con il comando di importazione di sicurezza per importare la chiave pubblica:

$ di sicurezza di importazione Roomer \ Inc.pem -f pkcs12 ~///login.keychain

1 chiave Portachiavi libreria importata.

Quando eseguo questa operazione, sebbene il comando restituisca "1 chiave importata", non vedo una chiave pubblica per "Roomer Inc" nella mia finestra Accesso portachiavi (ho chiuso Accesso Portachiavi e l'ho riaperto).

In entrambi i casi, abbiamo identificato che questo è il nostro blocco. (Il sintomo ovviamente è che il progetto XCode non costruirà per il profilo di provisioning AdHoc da utilizzare con TestFlight). Ho omesso i passaggi aggiuntivi riguardanti l'installazione di XCode e l'installazione di TestFlight, perché riteniamo che il problema principale abbia a che fare con l'importazione delle chiavi come spiegato sopra.

risposta

23

Abbiamo capito il nostro problema e sto postando qui la mia risposta in modo che altri possano trovare utile.

Il problema è in realtà un problema di UX con Accesso Portachiavi. Consentimi di eseguire il backup e fornire un piccolo contesto: quando crei un certificato di distribuzione con Apple, lo crei in base a un PRIVATE KEY e alle autorizzazioni basate su app.

In Accesso Portachiavi, il certificato di distribuzione è elencato come un bambino sotto il nome della chiave privata da cui è stato creato. Ecco il trucco: quando si utilizza la casella di ricerca in Accesso portachiavi (nel mio caso stavamo digitando "Roomer" perché questo è il nome sul nostro certificato di distribuzione), non cercherà un certificato con quel nome, cercherà un certificato allegato a una chiave privata per quel nome.

Quindi il mio collega aveva creato un certificato di distribuzione basato su una chiave privata denominata "Jorge Davila" (il suo nome), anche se il certificato di distribuzione era denominato "iPhone Distribution: Roomer Inc."

Quando ha cercato "Roomer" in Accesso Portachiavi, quello corretto NON era visualizzato nei risultati della ricerca perché la chiave con cui questo certificato è stato creato era denominata "Jorge Davila" non "Roomer". Quindi, stava esportando il certificato sbagliato e non si rendeva conto perché c'erano altri (alcuni scaduti) con quel nome.

Ecco come quella giusta sembra:

Questo è un problema relativamente sfumata con l'UX di Accesso Portachiavi e il fatto che lo strumento di ricerca non ti dà i risultati che ci si aspetta a. Sto postando questa risposta nella speranza che altri possano trovarla utile.