Debian 9, APT und "GPG-Fehler: ... InRelease: Die folgenden Signaturen waren ungültig:"

8

Ich veröffentliche ein Debian-Repository . Es wurde mit einem 4096-Bit-GPG-Schlüssel signiert und wird seit einiger Zeit von Debian 7- und Debian 8-Systemen verwendet. Kürzlich berichtete einer meiner Benutzer, dass Debian 9 Probleme damit hatte. Insbesondere apt-get updateergab sich:

Paketlisten lesen ... Fertig
   W: GPG-Fehler: http://Debian-repository.JdeBP.info . stabile InRelease: Die folgenden Signaturen waren ungültig: A71733F3CEBD655CB25A0DDCE1E3A497555CE68F
   W: Das Repository ' http://Debian-repository.JdeBP.info . Stable InRelease 'ist nicht signiert.

Beachten Sie, dass ich im Gegensatz zu den Leuten bei " Repo APT sicher - GPG-Signatur für apt-get update ungültig " und " Frustriert von treffend und GPG-Signatur " nicht verwende aptly. Ich leide also eindeutig nicht an aptlyirgendwelchen Fehlern. (-:

Also, wo liegt das Problem?

JdeBP
quelle
Beachten Sie, dass dies eine andere Fehlermeldung ist und fragt, was der Endbenutzer tun kann, anstatt die Dinge aus der Sicht des Repository-Herausgebers zu betrachten, und dass diese Frage aus dem März 2016 stammt, als die hier diskutierte Änderung APT im November 2016
zugestoßen ist
Ich stimme zu, dass die Perspektive anders ist.
Stephen Kitt

Antworten:

9

Die Ursache des Problems ist, dass ohne Aktualisierung des Debian-Wikis oder eines ähnlichen Dokuments und so gut wie nur ein paar weitgehend Ubuntu- bezogenen Ankündigungen auf einer nicht-debianischen persönlichen WWW-Site Schlüssel unterstützt werden, die eine Präferenz für SHA angeben. 1 Verschlüsselung wurde in APT ab Debian 9 deaktiviert. (Insbesondere wurde sie in APT Version 1.4 ~ beta1 deaktiviert, und Debian 9 hat Version 1.4.7.)

Ein Repository-Publisher muss also zwei Dinge tun:

  • Passen Sie das personal-digest-preferencesund personal-cipher-preferencesan $HOME/.gnupg/gpg.confan, um SHA-1 aus den GPG-Einstellungen zu entfernen. Dies verhindert, dass das Problem mit neuen Schlüsseln auftritt.
  • Passen Sie die Einstellungen an , die im aktuellen Repository-Signaturschlüssel enthalten sind , um SHA-1 auch von dort zu entfernen. Dafür muss man:
    • Lauf
      gpg --edit-key "$ {key_fingerprint}"
      die entsprechende Taste Fingerabdruck ersetzen, bearbeiten dann die wichtigsten Einstellungen mit den prefund setprefBefehle, speichern Sie die Schlüssel zum Schlüsselbund.
    • Exportieren Sie den öffentlichen Schlüssel des aktualisierten Schlüssels vom Schlüsselbund in eine Datei.
    • Signieren Sie das Repository erneut mit dem geänderten Signaturschlüssel.
    • Veröffentlichen Sie die öffentliche Schlüsseldatei des aktualisierten Signaturschlüssels.

Beachten Sie, dass es nicht erforderlich ist, einen neuen Signaturschlüssel zu generieren, und dass der aktualisierte Schlüssel mit entferntem SHA-1 weiterhin mit dem älteren Debian 8 APT zusammenarbeitet.

Weiterführende Literatur

JdeBP
quelle
4

Wie JdeBP bereits betont hat, unterstützt apt ab Debian 9 SHA-1 nicht mehr, was bedeutet, dass die InReleaseDatei stattdessen mit SHA-256 erstellt werden muss (dasselbe gilt für Release.pg).

Was es für mich behoben hat, war die Angabe -digest-algo SHA256als Parameter für gpg, sodass die vollständige Sequenz wie folgt lauten würde:

  1. Erstellen Sie das Paket:

    dpkg-deb --build ${PACKAGE_NAME}-1.0/
    sudo rm ${SOME_TEMP_PATH}/*
    mv ${PACKAGE_NAME_name}-1.0.deb ${SOME_TEMP_PATH}/
    dpkg-scanpackages ${SOME_TEMP_PATH} /dev/null | gzip -9c > ${SOME_TEMP_PATH}/Packages.gz
    sudo rm ${PATH_TO_REPO_IN_WWW_SERVER}/*
    sudo cp ${SOME_TEMP_PATH}/* ${PATH_TO_REPO_IN_WWW_SERVER}
    cd ${PATH_TO_REPO_IN_WWW_SERVER}
    
  2. Unterschreib es:

    apt-ftparchive --md5 --sha256 release .  > Release 
    gpg --digest-algo SHA256 --armor --output Release.gpg --detach-sign Release
    gpg --digest-algo SHA256 --clearsign --output InRelease Release
    

Das Signieren kann auch aus dem temporären Ordner erfolgen und dann das gesamte Objekt in den Webserver-Ordner kopiert werden, oder Sie möchten mit Pfaden herumspielen, nämlich dem .beim Aufrufen verwendeten " " apt-ftparchive, wenn Sie Ihre .debs in einem separaten Baum speichern möchten .

Ricardo Rodrigues
quelle