Come importare una chiave gpg segreta (copiata da una macchina all'altra)?


153

Sto cercando di copiare la mia chiave gpg da una macchina all'altra.

Lo voglio:

gpg --export ${ID} > public.key
gpg --export-secret-key ${ID} > private.key

Spostare i file su una nuova macchina, quindi:

gpg --import public.key
gpg: nyckel [ID]: public key [Name, e-mail] was imported
gpg: Total number of treated keys: 1
gpg:                 imported: 1  (RSA: 1)

gpg --allow-secret-key-import private.key
sec  [?]/[ID] [Creation date] [Name, e-mail]
ssb  [?]/[SUB-ID] [Creation date]

Tutto mi sembra buono, ma poi:

$ gpg -d [file].gpg
gpg: encrypted with 4096-bit RSA-key, id [SUB-ID], created [Creation date]
  [Name, e-mail]
gpg: decryption failed: secret key not accessible

Quindi il messaggio di errore dice che il file è stato crittografato con [SUB-ID], che l'importazione della chiave segreta sembra dire che è stato importato. (Il [SUB-ID] in entrambi i messaggi è lo stesso).

Quindi sto chiaramente facendo qualcosa di sbagliato, ma non so cosa.

Risposte:


164

È necessario aggiungere --importalla riga di comando per importare la chiave privata. Non è necessario utilizzare la --allow-secret-key-importbandiera. Secondo la pagina man: "Questa è un'opzione obsoleta e non viene utilizzata da nessuna parte."

gpg --import private.key

Qualche possibilità che sapresti anche perché gpg2 -e -r [ID]dice "Non vi è alcuna garanzia che questa chiave appartenga all'utente nominato"? Vorrei averlo incluso nella domanda originale, ma l'ho notato solo più tardi.
user50849

1
GnuPG mantiene un database di fiducia che utilizza per decidere quanto fidarsi di quali chiavi. Ad esempio, affidati maggiormente alle tue chiavi, chiavi che non sono firmate direttamente o indirettamente da alcuna chiave affidabile. Dopo aver appena importato in un database vuoto, probabilmente nessuna chiave è attendibile. Questo database di fiducia è separato dal database o dalle chiavi stesse, pertanto l'importazione di chiavi non le rende attendibili a meno che non siano firmate da una chiave già attendibile. Devi indicare a GnuPG quali chiavi vuoi fidarti separatamente.
Celada,

3
@Celeda, grazie, con --edit-key e con il comando trust sono riuscito a fidarmi della chiave. Poiché la mia domanda originale era come copiare la chiave da una macchina all'altra, penso che sarebbe opportuno aggiungere qualcosa al riguardo alla tua risposta. Preferirei non modificare la tua risposta da solo e sembra che tu ne sappia molto più di me a riguardo.
user50849

Non sento di aver capito bene il trustdb per parlarne nella mia risposta. Sono contento che tu sia riuscito a risolverlo usando i vaghi suggerimenti che ho dato nel mio commento.
Celada,

Ok, ho ribattezzato la domanda originale in modo che si adatti più specificamente alla risposta. In questo modo posso porre una domanda separata al trustdb. Grazie per l'aiuto. :)
user50849

81

Sopra c'è solo una risposta parziale. La risposta completa è:

gpg --import private.key
  • Dato il KEYID (ad es. FA0339620046E260) Dall'output :

    gpg --edit-key {KEY} trust quit
    # enter 5<RETURN>
    # enter y<RETURN>
    
  • O usa il comando automatico qui sotto:

    expect -c "spawn gpg --edit-key {KEY} trust quit; send \"5\ry\r\"; expect eof"
    

Infine, verifica che la chiave sia ora attendibile [ultimate]anziché[unknown]

gpg --list-keys

6
Questa dovrebbe essere la risposta accettata. Molto più completo.
Ben Lindsay,

Cosa fanno questi comandi extra?
steinybot,

@Steiny Rende la chiave attendibile con [ultimate] anziché [unknown]. gpgtools.tenderapp.com/kb/faq/…
cmcginty

0

Stavo importando da un backup che aveva una vecchia versione di gpg. Poiché il vecchio computer non era disponibile, solo il backup, non potevo esportarlo prima. Questo è ciò che ha funzionato per me.

gpg --import old_home_dir/.gnupg/pubring.gpg
gpg --import old_home_dir/.gnupg/secring.gpg

Se vuoi essere in grado di importare chiavi segrete senza inserire immediatamente la passphrase, usa l' --batchopzione.

Per verificare le chiavi pubbliche:

gpg --list-keys

Per verificare le chiavi segrete:

gpg --list-secret-keys
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.