GPG 署名の検証

Eclipse Temurin リリースには GPG 署名が含まれており、ダウンロードが正規のものであり、ビルド後に改ざんされていないことを検証するために使用できます。このページでは、これらの署名を検証する方法について説明します。

GPG 署名とは?

GPG 署名は、公開/秘密鍵ペアを使用して、ファイルが公開されてからあなたに届くまでの間に改ざんされていないことを確認する暗号化プロセスです。Adoptium は秘密鍵を使用して OpenJDK バイナリと共に配布される署名ファイルを生成します。対応する公開鍵を取得し、署名が有効であることを検証することで、ファイルの完全性を証明し、Adoptium によって署名されサードパーティによって変更されていないことを確認できます。

SHA-256 チェックサムの代わりに GPG 署名を使用する理由

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.link および binaries[].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 チェックサムを検証します:

  • Linux: sha256sum <file>

  • macOS: shasum -a 256 <file>

  • Windows: certUtil -hashfile <file> SHA256

署名の検証

gpg ツールがインストールされている必要があります。署名ファイルと対応するバイナリを指定して verify コマンドを実行します:

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

verify コマンドを再度実行します。署名は有効ですが、鍵はまだ信頼されていないことが表示されます:

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