¿Qué es la firma GPG?

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]
edit icon

¡Ayúdanos a mejorar esta documentación!

Toda la documentación de Adoptium es de código abierto. ¿Has encontrado algo incorrecto o confuso?

Autores de la documentación
sxagdams
Join our Slack channel to discuss and reach out to maintainers.Join Slack