GPGを使用してRPMを連続ビルドの一部として署名します - パスフレーズのプロンプトを回避するにはどうすればよいですか?
-
29-09-2019 - |
質問
Cronによってトリガーされたシェルスクリプトを介してRPMを生成する継続的な統合ビルドシステムがあります。 GPGでRPMに署名したいのですが、GPGは、Cronのユーザーコンソールがないため、Consoleでパスフレーズに手動で入力するユーザーを主に主張しています。
私はGPG-Agentについて読みました。これにより、現在のログインセッションのためにパスフレーズを1回入力できますが、Cronにはログインセッションがありません。私が希望するのは、GPG-Agentを設定して、ブートタイムでパスフレーズを一度受け入れ、必要に応じてCronセッションに手渡すことです。これが可能かどうかはわかりませんが、GPG-Agentのドキュメントはかなり最小限です。
代替案は、GPGがそれを要求するときにPassPhraseを入力することを期待することですが、パスフレーズをビルドスクリプトに含める必要があるため、これは明らかに大きなセキュリティホールです。
解決
起動時にGPG-Agentを起動し、GPG_AGENT_INFO環境変数を保存する必要があります。その後、スクリプトの環境でセットアップでき、期待どおりに機能するはずです。さらに、GPG_AGENT_INFOのソケットの権限を確認してください。スクリプトが読み取られるようにしてください。
他のヒント
RPMを生成するために使用するビルドツールを使用すると、署名する機能があります。たとえば、Gradleには署名を行うプラグインがあります。キーリングファイルのID、PassPhrase、および場所を備えたプロパティファイルを作成する必要があります。残りは行われます。
見る: https://docs.gradle.org/current/userguide/singe_plugin.html