数年前に初期のシステム管理者によって設定されたプライベートなdebianリポジトリがあります。パッケージは、リポジトリサーバー上のルートユーザーに対して示されているように、古いキー7610DDDE(失効する必要があります)によって署名されました。
# gpg --list-keys
/root/.gnupg/pubring.gpg
------------------------
pub 1024D/2D230C5F 2006-01-03 [expired: 2007-02-07]
uid Debian Archive Automatic Signing Key (2006) <ftpmaster@debian.org>
pub 1024D/7610DDDE 2006-03-03 [revoked: 2016-03-31]
uid Archive Maintainer <root@xxxxxxxxxx.com>
pub 4096R/DD219672 2016-04-18
uid Archive Maintainer <root@xxxxxxxxxx.com>
以下のすべてのコマンドは、rootユーザーとしてのものです。repository / conf / distributionsファイルを変更して、明示的に作成した新しいサブキーを署名に使用しました。
Architectures: i386 amd64 source
Codename: unstable
Components: main
...
SignWith: DD219672
しかし、dputを使用してパッケージを更新すると、
Could not find any key matching 'DD219672'!
ERROR: Could not finish exporting 'unstable'!
This means that from outside your repository will still look like before (and
should still work if this old state worked), but the changes intended with this
call will not be visible until you call export directly (via reprepro export)
そして、reprepro exportを直接実行すると、次のようになります:
# reprepro -V export unstable
Exporting unstable...
generating main/Contents-i386...
generating main/Contents-amd64...
Could not find any key matching 'DD219672'!
ERROR: Could not finish exporting 'unstable'!
私はグーグルで検索し、適切なgnupgディレクトリを見つけるrepreproの問題の可能性を示す古いスレッドをいくつか見つけました...そのため、上記と同じ結果でこれを試しました:
# GNUPGHOME=/root/.gnupg reprepro -V export unstable
あるスレッドは、正常に動作しているように見えるダミーファイルに署名してキーをテストすることを提案しました...少なくともエラーは報告されず、終了後に576バイトのbla.gpgファイルになりました。
# touch bla
# gpg -u DD219672 --sign bla
repreproのmanページには、「署名に問題がある場合、gpg --list-secret-keys valueを試して、gpgが値を解釈する方法を確認できます。そのコマンドがキーまたは複数のキーをリストしない場合、他の値(keyidなど)、そのgpgは一意のキーに簡単に関連付けることができます。」だから私もそれをチェックして得た:
# gpg --list-secret-keys DD219672
sec 4096R/DD219672 2016-04-18
uid Archive Maintainer <root@xxxxxxxxxx.com>
そして最後に、最初に再現を設定したシステム管理者と連絡を取ることができ、パスフレーズなしでキーを試すことを提案しました。そこで、新しい署名キーDD219672を生成して公開し、上記の手順を繰り返しましたが、結果は同じでした。
今日、manページをさらに読んで勉強し、repreproを実行するとpgp-agentが自動的に開始されることに気付いた後、しばらくそれを追いかけることにしました。
私はgpg-agent.confを追加しました
debug-level 7
log-file /root/gpg.agent.log
debug-all
そして、ログでgpg-agentがキーを見つけていないことがわかります
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 -> OK Pleased to meet you, process 18903
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 <- RESET
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 -> OK
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 <- OPTION ttyname=/dev/pts/0
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 -> OK
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 <- OPTION ttytype=xterm-256color
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 -> OK
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 <- GETINFO version
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 -> D 2.1.11
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 -> OK
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 <- OPTION allow-pinentry-notify
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 -> OK
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 <- OPTION agent-awareness=2.1.0
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 -> OK
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 <- AGENT_ID
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 -> ERR 67109139 Unknown IPC command <GPG Agent>
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 <- HAVEKEY C2C5C59E5E90830F314ABB66997CCFAACC5DEA2F 416E8A33354912FF4843D52AAAD43FBF206252D9 8CE77065EA6F3818A4975072C8341F32CB7B0EF0
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 -> ERR 67108881 No secret key <GPG Agent>
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 <- [eof]
これまでのところ、pgp-agentがHAVKEYにリストするキーを見つけている場所と、更新されたパッケージに署名するために新しいキーDD219672を見つけるために正しい方向にポイントする方法を見つけることができませんでした。