2013-05-30 16 views
20

Ho creato una coppia di chiavi + certificato firmato per lo sviluppo di iOS/OSX. Da qualche parte lungo la strada, ho perso la chiave pubblica che accompagna la mia chiave privata. Forse perché Keychain Access non raggruppa le chiavi private e pubbliche insieme, come avviene con certificati e chiavi private (che è così irritante! Perché fa (non) farlo!)Ho perso la mia chiave pubblica. Posso recuperarlo da una chiave privata?

In Accesso Portachiavi, posso fai ancora clic con il tasto destro sulla chiave privata -> "Richiedi un certificato"; ma senza la chiave pubblica disponibile ottengo l'errore "L'oggetto specificato non è stato trovato nel portachiavi". Sono pretty sicuro che le chiavi pubbliche sono recuperabili, ma come? Ovviamente, l'accesso a portachiavi non è abbastanza intelligente da farlo automaticamente.

Alla fine l'ho capito e segnerà la mia risposta dopo alcuni giorni, a meno che qualcuno non aggiunga qualcosa di nuovo alla risposta.

risposta

54

Mi sono ricordato vagamente di poterlo fare con openssl su file .pem, quindi questa è la direzione che ho diretto.

  • In Accesso Portachiavi, esportare la chiave privata come ad esempio private.p12. Applica una password o no.
  • Converti in .pem: openssl pkcs12 -in private.p12 -out private.pem. Inserisci la password dal passaggio precedente. Sei obbligato ad applicare una password a .pem.
  • Estrarre la parte pubblica: openssl rsa -in private.pem -pubout > public.pem. Inserisci la password dal passaggio precedente.
  • Importazione in Accesso Portachiavi: security import public.pem -k login.keychain. Se non si specifica un portachiavi, l'importazione sembra completata ma non è stato possibile trovare la posizione in cui è stato inserito l'elemento.
  • In Accesso Portachiavi, cercare nel portachiavi di accesso per "Chiave pubblica importata". Rinominarlo e spostarsi nella posizione desiderata.
  • Ripulisci tutto da solo, in particolare le chiavi private .p12 e .pem con password scadenti o inesistenti.
+3

Il passaggio 3 non è riuscito perché private.pem contiene un certificato. Funziona dopo aver modificato il passaggio 2: openssl pkcs12 -in private.p12 -nocerts -nodes -out private.pem – jlukanta

+3

Se si desidera esportare la chiave privata senza includere il certificato, assicurarsi di esportare la chiave privata dalla categoria "Tutti gli articoli" . NON esportare la chiave dalla categoria "Chiavi" sul portachiavi. Il certificato corrispondente alla chiave privata sarà incluso anche se non lo hai selezionato. – jlukanta

+0

come si "rinomina" un elemento portachiavi? – lhunath

Problemi correlati