Was ist GPG-Signierung?

Eclipse Temurin-Releases enthalten GPG-Signaturen, mit denen Sie überprüfen können, dass Ihre Downloads echt sind und seit dem Build nicht manipuliert wurden. Diese Seite erklärt, wie Sie diese Signaturen verifizieren.

Was ist GPG-Signierung?

GPG-Signierung ist ein kryptographischer Prozess, der ein privates/öffentliches Schlüsselpaar verwendet, um zu bestätigen, dass eine Datei zwischen der Veröffentlichung und der Zustellung an Sie nicht manipuliert wurde. Adoptium verwendet den privaten Schlüssel, um eine Signaturdatei zu erstellen, die zusammen mit den OpenJDK-Binärdateien verteilt wird. Sie können den entsprechenden öffentlichen Schlüssel erhalten und damit verifizieren, dass die Signatur gültig ist, was die Integrität der Datei beweist und bestätigt, dass sie von Adoptium signiert und nicht von Dritten verändert wurde.

Warum GPG-Signaturen statt SHA-256-Prüfsummen verwenden?

Während SHA-256-Prüfsummen verifizieren, dass ein Download während der Übertragung nicht beschädigt wurde, können sie auch bei einem Man-in-the-Middle-Angriff kompromittiert werden. Die GPG-Signierung vermeidet dieses Problem, indem sie eine separat zertifizierte Signatur verwendet, der Sie unabhängig vertrauen und nachfolgende Downloads damit verifizieren können.

Die Signaturen erhalten

Die GPG-Signatur für jede Binärdatei ist über die Adoptium API-Metadaten verfügbar. In den folgenden Beispielen verwenden wir JDK 25, aber Sie können die API-Aufrufe für andere Versionen anpassen.

Release-Metadaten herunterladen:

curl 'https://api.adoptium.net/v3/assets/feature_releases/25/ga' > adopt.json

Extrahieren Sie den Download-Link der Binärdatei und den entsprechenden Signatur-Link mit dem Befehlszeilen-JSON-Tool jq. Die Informationen befinden sich in den Feldern binaries[].package.link und binaries[].package.signature_link.

Um zum Beispiel das Linux x64 JDK und seine Signatur herunterzuladen:

jq '.[0].binaries[] | select(.architecture=="x64") | select (.os=="linux") | select (.image_type=="jdk") .package.link' adopt.json | xargs curl -LO
jq '.[0].binaries[] | select(.architecture=="x64") | select (.os=="linux") | select (.image_type=="jdk") .package.signature_link' adopt.json | xargs curl -LO

Sie können auch die SHA-256-Prüfsumme aus den Metadaten erhalten:

jq '.[0].binaries[] | select(.architecture=="x64") | select (.os=="linux") | select (.image_type=="jdk") .package.checksum' adopt.json

Verifizieren Sie die SHA-256-Prüfsumme gegen die Ausgabe eines der folgenden Befehle:

  • Linux: sha256sum <file>

  • macOS: shasum -a 256 <file>

  • Windows: certUtil -hashfile <file> SHA256

Die Signaturen verifizieren

Sie benötigen das installierte gpg-Tool. Führen Sie den Verifizierungsbefehl mit der Signaturdatei und der zugehörigen Binärdatei aus:

gpg --verify <binary_filename>.sig <binary_filename>

Wenn Sie den öffentlichen Signaturschlüssel von Adoptium noch nicht haben, sehen Sie eine Meldung wie diese:

gpg: Signature made Mon Jul  4 18:20:31 2022 UTC
gpg:                using RSA key 3B04D753C9050D9A5D343F39843C48A565F8F04B
gpg: Can't check signature: No public key

Den öffentlichen Adoptium-Schlüssel importieren

Laden Sie den Schlüssel von einem vertrauenswürdigen GPG-Schlüsselserver herunter:

gpg --keyserver keyserver.ubuntu.com --recv-keys 3B04D753C9050D9A5D343F39843C48A565F8F04B

Führen Sie den Verifizierungsbefehl erneut aus. Sie werden sehen, dass die Signatur gültig ist, aber der Schlüssel noch nicht vertrauenswürdig ist:

gpg: Good signature from "Adoptium GPG Key (DEB/RPM Signing Key) <[email protected]>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.

Dem Schlüssel vertrauen

Um dem Schlüssel vollständig zu vertrauen und die Warnung zu entfernen, führen Sie Folgendes aus und folgen Sie den Eingabeaufforderungen, um volles Vertrauen zu gewähren:

gpg --edit-key 3B04D753C9050D9A5D343F39843C48A565F8F04B trust

Die Verifizierung sollte dann erfolgreich sein:

gpg: Signature made Mon Jul  4 18:20:31 2022 UTC
gpg:                using RSA key 3B04D753C9050D9A5D343F39843C48A565F8F04B
gpg: checking the trustdb
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: Good signature from "Adoptium GPG Key (DEB/RPM Signing Key) <[email protected]>" [ultimate]
edit icon

Hilf uns, diese Dokumentation zu verbessern!

Alle Adoptium-Dokumentationen sind Open Source. Etwas falsch oder unklar?

Dokumentations-Autoren
gdams
Join our Slack channel to discuss and reach out to maintainers.Join Slack