3.3. GPG を使用したリポジトリーのメタデータの確認
破損したパッケージを検出して回避するために、DNF パッケージマネージャーを使用して RPM パッケージの GNU Privacy Guard (GPG) 署名を確認でき、リポジトリーのメタデータが GPG キーで署名されているかどうかも確認できます。
セキュリティー上の理由から、GPG キーを https
経由で利用できるようにすることで、RPM とは別のチャネルでキーを配布できます。ソース内で check_repogpg = true
を設定することで、チェックの実行にどの GPG キーを使用するかを指定できます。キーが https
経由で利用できる場合は、gpgkeys
エントリーをキーの URL に設定します。オプションで、キー全体をソース gpgkeys
エントリーに埋め込んで、URL から取得する代わりに直接インポートすることもできます。
手順
リポジトリーを作成するフォルダーにアクセスします。
$ cd repo/
createrepo_c
を実行して、RPM パッケージからリポジトリーを作成します。$ createrepo_c .
リポデータがあるディレクトリーにアクセスします。
$ cd repodata/
repomd.xml
ファイルに署名してリポジトリーをセットアップします。$ gpg -u YOUR-GPG-KEY-EMAIL --yes --detach-sign --armor repomd.xml
GPG 署名を確認します。
-
リポジトリーソースで
check_repogpg = true
を設定します。 キーが
https
経由で利用できる場合は、gpgkeys
フィールドにキーのキー URL を設定します。URL キーは必要なだけ追加できます。次に例を示します。check_gpg = true check_ssl = true id = "repository_id" name = "repository_name" system = false type = "repository_type" url = "repository_URL" check_repogpg = true gpgkeys=["_GPG_key_URL"]
オプション: キー全体を
gpgkeys
フィールドに埋め込むことができます。必要なだけキーを追加できます。たとえば、GPG キーをgpgkeys
フィールドに直接追加します。check_gpg = true check_ssl = true check_repogpg id = "repository_id" name = "repository_name" system = false type = "repository_type" url = "repository_URL" gpgkeys=["GPG_key"]
-
リポジトリーソースで
検証
リポジトリーの署名を手動でテストします。
$ gpg --verify repomd.xml.asc
テストで署名が見つからない場合は、次のようなエラーが表示されます。
$ GPG verification is enabled, but GPG signature is not available. This may be an error or the repository does not support GPG verification: Status code: 404 for http://repo-server/rhel/repodata/repomd.xml.asc (IP: 192.168.1.3)
署名が無効な場合は、次のようなエラーが表示されます。
repomd.xml GPG signature verification error: Bad GPG signature