Las versiones de Eclipse Temurin incluyen firmas GPG que puede utilizar para verificar que sus descargas son auténticas y no han sido alteradas desde que fueron compiladas. Esta página explica cómo verificar dichas firmas.
¿Qué es la firma GPG?
La firma GPG es un proceso criptográfico que utiliza un par de claves privada/pública para confirmar que un archivo no ha sido alterado entre el momento en que fue publicado y el momento en que le fue entregado. Adoptium utiliza la clave privada para producir un archivo de firma que se distribuye junto a los binarios de OpenJDK. Puede obtener la clave pública correspondiente y usarla para verificar que la firma es válida, lo que demuestra la integridad del archivo y confirma que fue firmado por Adoptium y no modificado por un tercero.
¿Por qué usar firmas GPG en lugar de sumas de verificación SHA-256?
Aunque las sumas de verificación SHA-256 verifican que una descarga no se ha corrompido en tránsito, también pueden verse comprometidas en un ataque de intermediario. La firma GPG evita este problema al utilizar una firma certificada de forma independiente en la que puede confiar y verificar descargas posteriores.
Obtención de las firmas
La firma GPG de cada binario está disponible a través de los metadatos de la API de Adoptium. En los siguientes ejemplos utilizamos JDK 25, pero puede ajustar las llamadas a la API para otras versiones.
Descargue los metadatos de la versión:
curl 'https://api.adoptium.net/v3/assets/feature_releases/25/ga' > adopt.json
Extraiga el enlace de descarga del binario y el enlace de la firma correspondiente usando la
herramienta de línea de comandos jq. La información se encuentra
en los campos binaries[].package.link y binaries[].package.signature_link.
Por ejemplo, para descargar el JDK Linux x64 y su firma:
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
También puede obtener la suma de verificación SHA-256 de los metadatos:
jq '.[0].binaries[] | select(.architecture=="x64") | select (.os=="linux") | select (.image_type=="jdk") .package.checksum' adopt.json
Verifique la suma de verificación SHA-256 comparándola con la salida de uno de los siguientes comandos:
-
Linux:
sha256sum <file> -
macOS:
shasum -a 256 <file> -
Windows:
certUtil -hashfile <file> SHA256
Verificación de las firmas
Necesita la herramienta gpg instalada. Ejecute el comando de verificación proporcionando el
archivo de firma y el binario al que corresponde:
gpg --verify <binary_filename>.sig <binary_filename>
Si aún no dispone de la clave de firma pública de Adoptium, verá un mensaje como este:
gpg: Signature made Mon Jul 4 18:20:31 2022 UTC
gpg: using RSA key 3B04D753C9050D9A5D343F39843C48A565F8F04B
gpg: Can't check signature: No public key
Importación de la clave pública de Adoptium
Descargue la clave desde un servidor de claves GPG de confianza:
gpg --keyserver keyserver.ubuntu.com --recv-keys 3B04D753C9050D9A5D343F39843C48A565F8F04B
Ejecute de nuevo el comando de verificación. Verá que la firma es válida, pero la clave aún no es de confianza:
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.
Confiar en la clave
Para confiar completamente en la clave y eliminar la advertencia, ejecute lo siguiente y siga las instrucciones para otorgar confianza total:
gpg --edit-key 3B04D753C9050D9A5D343F39843C48A565F8F04B trust
La verificación debería tener éxito:
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]

