GPG 签名验证

Eclipse Temurin 发布版本包含 GPG 签名,您可以使用它来验证下载内容的真实性,确保其自构建以来未被篡改。本页说明如何验证这些签名。

什么是 GPG 签名?

GPG 签名是一种密码学过程,使用私钥/公钥对来确认文件自发布到交付给您之间未被篡改。Adoptium 使用私钥生成与 OpenJDK 二进制文件一起分发的签名文件。您可以获取相应的公钥,并使用它验证签名是否有效,从而证明文件的完整性,并确认它由 Adoptium 签名且未被第三方修改。

为什么使用 GPG 签名而不是 SHA-256 校验和?

虽然 SHA-256 校验和可以验证下载内容在传输过程中未损坏,但它们也可能在中间人攻击中被破坏。GPG 签名通过使用单独认证的签名避免了这一问题,您可以独立信任该签名,然后据此验证后续下载。

获取签名

每个二进制文件的 GPG 签名可通过 Adoptium API 元数据获取。以下示例使用 JDK 25,您可以调整 API 调用以适用于其他版本。

下载发布元数据:

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

使用 jq 命令行 JSON 工具提取二进制下载链接及其对应的签名链接。相关信息位于 binaries[].package.linkbinaries[].package.signature_link 字段中。

例如,下载 Linux x64 JDK 及其签名:

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

您也可以从元数据中获取 SHA-256 校验和:

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

将 SHA-256 校验和与以下命令之一的输出进行比较验证:

  • Linuxsha256sum <file>

  • macOSshasum -a 256 <file>

  • WindowscertUtil -hashfile <file> SHA256

验证签名

您需要安装 gpg 工具。运行验证命令,提供签名文件和对应的二进制文件:

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

如果您还没有 Adoptium 的公共签名密钥,您将看到类似以下的消息:

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

导入 Adoptium 公钥

从受信任的 GPG 密钥服务器下载密钥:

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

再次运行验证命令。您将看到签名有效,但密钥尚未被信任:

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.

信任密钥

要完全信任该密钥并消除警告,请运行以下命令并按提示授予最终信任:

gpg --edit-key 3B04D753C9050D9A5D343F39843C48A565F8F04B trust

此后验证应成功:

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

帮助我们完善这些文档!

所有 Adoptium 文档均为开源。发现错误或不清楚的内容?

文档作者
sxagdams
Join our Slack channel to discuss and reach out to maintainers.Join Slack