Vérification des signatures GPG

Les versions d’Eclipse Temurin incluent des signatures GPG que vous pouvez utiliser pour vérifier que vos téléchargements sont authentiques et n’ont pas été altérés depuis leur construction. Cette page explique comment vérifier ces signatures.

Qu’est-ce que la signature GPG ?

La signature GPG est un processus cryptographique utilisant une paire de clés privée/publique pour confirmer qu’un fichier n’a pas été altéré entre sa publication et sa livraison. Adoptium utilise la clé privée pour produire un fichier de signature distribué aux côtés des binaires OpenJDK. Vous pouvez obtenir la clé publique correspondante et l’utiliser pour vérifier que la signature est valide, prouvant ainsi l’intégrité du fichier et confirmant qu’il a été signé par Adoptium et non modifié par un tiers.

Pourquoi utiliser les signatures GPG plutôt que les sommes de contrôle SHA-256 ?

Bien que les sommes de contrôle SHA-256 vérifient qu’un téléchargement n’a pas été corrompu en transit, elles peuvent également être compromises lors d’une attaque de l’homme du milieu. La signature GPG évite ce problème en utilisant une signature certifiée séparément que vous pouvez faire confiance de manière indépendante, puis vérifier les téléchargements ultérieurs.

Obtention des signatures

La signature GPG de chaque binaire est disponible via les métadonnées de l’API Adoptium. Dans les exemples suivants, nous utilisons JDK 25, mais vous pouvez adapter les appels API pour d’autres versions.

Téléchargez les métadonnées de la version :

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

Extrayez le lien de téléchargement du binaire et le lien de signature correspondant à l’aide de l’outil en ligne de commande JSON jq. Les informations se trouvent dans les champs binaries[].package.link et binaries[].package.signature_link.

Par exemple, pour télécharger le JDK Linux x64 et sa signature :

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

Vous pouvez également obtenir la somme de contrôle SHA-256 depuis les métadonnées :

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

Vérifiez la somme de contrôle SHA-256 par rapport au résultat de l’une des commandes suivantes :

  • Linux : sha256sum <file>

  • macOS : shasum -a 256 <file>

  • Windows : certUtil -hashfile <file> SHA256

Vérification des signatures

Vous devez avoir l’outil gpg installé. Exécutez la commande de vérification en fournissant le fichier de signature et le binaire correspondant :

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

Si vous ne possédez pas encore la clé de signature publique d’Adoptium, vous verrez un message comme celui-ci :

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

Importation de la clé publique Adoptium

Téléchargez la clé depuis un serveur de clés GPG de confiance :

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

Exécutez à nouveau la commande de vérification. Vous verrez que la signature est valide, mais que la clé n’est pas encore approuvée :

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.

Approbation de la clé

Pour approuver entièrement la clé et supprimer l’avertissement, exécutez ce qui suit et suivez les invites pour accorder une approbation totale :

gpg --edit-key 3B04D753C9050D9A5D343F39843C48A565F8F04B trust

La vérification devrait alors réussir :

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

Aidez-nous à améliorer cette documentation !

Toutes les documentations Adoptium sont open source. Une erreur ou un point flou ?

Auteurs de la documentation
sxagdams
Join our Slack channel to discuss and reach out to maintainers.Join Slack