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]
