우리는 몇 년 전에 이전 시스템 관리자가 설정 한 개인 데비안 저장소를 가지고 있습니다. 패키지는 repo 서버의 루트 사용자를 위해 여기에 표시된 것처럼 이전 키인 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>
아래의 모든 명령은 루트 사용자입니다. 서명을 위해 명시 적으로 만든 새 하위 키를 사용하도록 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 내보내기를 직접 실행하면 다음과 같은 결과가 나타납니다.
# 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'!
나는 reprepro가 적절한 gnupg 디렉토리를 찾는 데 가능한 문제를 나타내는 몇 가지 오래된 스레드를 발견했으며 위의 동일한 결과로 시도했습니다.
# GNUPGHOME=/root/.gnupg reprepro -V export unstable
한 스레드는 정상적으로 작동하는 것처럼 보이는 더미 파일에 서명하여 키 테스트를 제안했습니다.
# touch bla
# gpg -u DD219672 --sign bla
reprepro 매뉴얼 페이지에 "서명에 문제가있는 경우 gpg --list-secret-keys 값 을 사용하여 gpg가 값 을 해석하는 방법을 확인할 수 있습니다. 해당 명령에 키나 여러 키가 나열되지 않으면 찾기를 시도하십시오. 다른 값 (예 : keyid)으로 인해 gpg가 고유 키와 더 쉽게 연관 될 수 있습니다. " 그래서 나는 그것을 확인하고 얻었다.
# gpg --list-secret-keys DD219672
sec 4096R/DD219672 2016-04-18
uid Archive Maintainer <root@xxxxxxxxxx.com>
그리고 마지막으로 처음 재현을 설정 한 시스템 관리자와 연락 할 수 있었고 암호없이 키를 사용하는 것이 좋습니다. 그래서 새로운 서명 키 DD219672를 생성하여 게시했으며 위의 단계를 다시 수행했지만 동일한 결과를 얻었습니다.
오늘, 나는 더 많은 매뉴얼 페이지를 읽고 연구하고 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]
지금까지 gpg-agent가 HAVKEY에 나열된 키를 찾는 위치와 업데이트 된 패키지에 서명하기 위해 새 키 DD219672를 찾기 위해 올바른 방향을 가리키는 방법을 알 수 없었습니다.