2010-10-11 6 views
5

Possiedo un sistema di generazione di integrazione continua che genera un RPM tramite uno script di shell attivato da cron. Voglio firmare l'RPM con gpg, ma gpg insiste che l'utente inserisca manualmente la passphrase nella console, che è chiaramente un non-starter poiché non esiste una console utente per cron.Utilizzare gpg per firmare un RPM come parte di una build continua: come evitare il prompt della passphrase?

Ho letto su gpg-agent che ti consente di inserire la passphrase una volta per la sessione di accesso corrente, ma ancora una volta cron non ha una sessione di accesso. Quello che vorrei è essere in grado di configurare gpg-agent per accettare la passphrase una volta al momento dell'avvio e passare alla sessione di cron quando necessario. Non ho idea se sia possibile o meno, e i documenti per gpg-agent sono abbastanza minimi.

L'alternativa sarebbe quella di utilizzare aspettano di inserire la passphrase quando gpg chiede per esso, ma è chiaro che questo è un grosso buco di sicurezza dal momento che la passphrase dovrà essere inclusi nello script di build.

risposta

5

Si dovrebbe avviare gpg-agent all'avvio e salvare la variabile di ambiente GPG_AGENT_INFO. Quindi puoi configurarlo nell'ambiente del tuo script e dovrebbe funzionare come previsto. Inoltre, assicurati che le autorizzazioni del socket in GPG_AGENT_INFO consentano al tuo script di leggerlo.

+0

Grazie, che è esattamente quello che sto cercando. Ma come interrogare o impostare le autorizzazioni su un socket? –

+0

Hai impostato il permesso come al solito (chown sul percorso in GPG_AGENT_INFO). Quindi, se la variabile d'ambiente è impostata, gpg dovrebbe usarla senza ulteriori azioni da parte tua. Nota che non ho provato questo caso, quindi vediamo se funziona;) – smola

-1

Qualsiasi strumento di generazione utilizzato per generare l'RPM potrebbe essere in grado di firmarlo. Ad esempio, gradle ha un plugin che firma per te. Devi creare un file delle proprietà con id, passphrase e posizione del file keyring, e fa il resto.

See: https://docs.gradle.org/current/userguide/signing_plugin.html

+1

Mentre questo può teoricamente rispondere alla domanda, [sarebbe preferibile] (// meta.stackoverflow.com/q/8259) per includere l'essenziale parti della risposta qui e fornire il link per riferimento. –

Problemi correlati