3.3. 使用 GPG 检查存储库元数据
要检测和避免损坏的软件包,您可以使用 DNF 软件包管理器检查 RPM 软件包上的 GNU Privacy Guard (GPG)签名,以及检查存储库元数据是否已使用 GPG 密钥进行了签名。
您可以使用密钥 URL 设置 gpgkeys
字段,输入您要通过 https
进行检查的 gpgkey
。或者,为了提高安全性,您还可以将整个密钥嵌入到 gpgkeys
字段中,来直接导入它,而不是直接从 URL 获取密钥。
先决条件
- 您要用作存储库的目录存在,且包含软件包。
步骤
访问您要创建存储库的文件夹:
cd repo/
$ cd repo/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
createrepo_c
来从 RPM 软件包创建存储库:createrepo_c .
$ createrepo_c .
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 访问 repodata 的目录:
cd repodata/
$ cd repodata/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为
repomd.xml
文件签名:gpg -u <_gpg-key-email_> --yes --detach-sign --armor /srv/repo/example/repomd.xml
$ gpg -u <_gpg-key-email_> --yes --detach-sign --armor /srv/repo/example/repomd.xml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要在存储库中启用 GPG 签名检查:
-
在存储库源中设置
check_repogpg = true
。 输入您要进行检查的
gpgkey
。如果您的密钥可以通过https
使用,请使用密钥的密钥 URL 设置gpgkeys
字段。您可以根据需要添加任意数量的 URL 密钥。以下是一个示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 作为替代方案,直接在
gpgkeys
字段中添加 GPG 密钥,例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果测试没有找到签名,GPG 工具会显示一个类似如下的错误:
GPG verification is enabled, but GPG signature is not available.
$ 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)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果签名无效,GPG 工具会显示一个类似如下的错误:
repomd.xml GPG signature verification error: Bad GPG signature
repomd.xml GPG signature verification error: Bad GPG signature
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
在存储库源中设置
验证
手动测试存储库的签名:
gpg --verify /srv/repo/example/repomd.xml.asc
$ gpg --verify /srv/repo/example/repomd.xml.asc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow