GnuPG 2, gpg-agent
e Pinback de Loopback
O GnuPG 2.0 e mais recente só consideram --passphrase-...
-options quando --batch
também é aplicado. De man gpg
:
Note that this passphrase is only used if the option
--batch
has also been given. This is different from GnuPG version 1.x.
Portanto, um comando de trabalho para o GnuPG 2.0 seria:
gpg --batch --passphrase-fd 0 --import <path>
Além disso, desde o GnuPG 2.1, gpg-agent
manipula todas as operações de chave secreta e também pede a senha. A idéia por trás disso é ter um pequeno aplicativo central manipulando os bits mais críticos da criptografia, e ter o GnuPG (comparativamente) grande com potencialmente mais bugs e aplicativos de segurança fazendo todas as outras coisas. Por padrão, gpg-agent
não consultará gpg
para a frase secreta, mas tente perguntar ao usuário diretamente (o que obviamente falhará em uma compilação autônoma). Mas há uma última chance: você pode usar --pinentry-mode loopback
para fazer gpg-agent
query gpg
para a frase secreta, mas como isso afeta a segurança como discutido anteriormente, você também deve configurar gpg-agent
para permitir a pinagem de loopback. p>
Adicione a seguinte linha a ~/.gnupg/gpg-agent.conf
:
allow-loopback-pinentry
Agora, você deve poder usar o seguinte comando no GnuPG 2.1 e mais recente:
gpg --batch --pinentry-mode loopback --passphrase-fd 0 --import <path>
Passando no gpg-agent
soquete
Uma opção melhor do que importar chaves privadas para contêineres do Docker é geralmente armazenar (e desbloquear) a chave privada no host e, em seguida, passar um soquete gpg-agent
para o contêiner do Docker. Dessa forma, os segredos críticos nunca entrarão no contêiner do Docker, e você pode ter certeza de que ele não será armazenado nas camadas da imagem e publicado por acidente.