A script that updated and signs my Dreambox .deb package repository's Release file broke from one day to the next:
$ echo "password" | gpg --quiet --no-tty --batch --passphrase-fd=0 --default-key 15E60BE8 --detach-sign -o Release.gpg.tmp Release gpg: Alle für '--default-key' angegebenen Werte wurden ignoriert gpg: no default secret key: Kein geheimer Schlüssel gpg: signing failed: Kein geheimer Schlüssel
The reason for the failure was that the key was expired:
$ gpg --list-keys gpg: "Trust-DB" wird überprüft gpg: marginals needed: 3 completes needed: 1 trust model: pgp gpg: Tiefe: 0 gültig: 1 signiert: 0 Vertrauen: 0-, 0q, 0n, 0m, 0f, 1u /home/cweiske/deb.open-dreambox.org/gpg-s3kr1t/pubring.gpg ---------------------------------------------------------- pub rsa2048 2017-09-22 [SC] [verfallen: 2019-09-22] D692A52C97747BBCA5EA7FECC55DC76D15E60BE8 uid [ verfallen ] deb.open-dreambox.org' <deb@open-dreambox.org>
I changed the expiration date of the public key (secret keys do not expire):
$ gpg --edit-key D692A52C97747BBCA5EA7FECC55DC76D15E60BE8 gpg> expire Wie lange bleibt der Schlüssel gültig? (0) 1y Key verfällt am Mi 23 Sep 2020 20:18:56 CEST Ist dies richtig? (j/N) j gpg> quit Änderungen speichern? (j/N) j
Signing now works again.