gpg 校验文件

本文介绍了如何使用GPG(GNU Privacy Guard)工具验证文件的数字签名。通过获取并导入所需的Key ID,可以解决无法校验文件的问题。在导入Key ID后,GPG能够确认文件来自可信来源,并在设置为完全信任后,消除警告信息。

$ gpg httpd-2.0.55.tar.gz.asc

gpg: Signature made Monday 10 October 2005 07:05:15 AM IST using RSA key ID 10FDE075
gpg: Can't check signature: public key not found

没有 Key ID ,当然也就无法校验文件
% gpg --verify apache_2.2.11-win32-x86-no_ssl.msi.asc
Warning: using insecure memory!
gpg: Signature made Wed Dec 10 15:32:32 2008 CST using RSA key ID CB9B9EC5
gpg: Can't check signature: No public key

所以要导入 key ID。 这里用 --recv-keys
% gpg --recv-keys CB9B9EC5

( or  $ gpg --keyserver pgpkeys.mit.edu --recv-key 10FDE075 )

Warning: using insecure memory!
gpg: requesting key CB9B9EC5 from hkp server keys.gnupg.net
gpg: key B55D9977: public key "William A. Rowe, Jr. <wrowe@rowe-clan.net>" imported
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   signed:   trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)

导入完成后,再来校验,就OK了。
% gpg --verify apache_2.2.11-win32-x86-no_ssl.msi.asc
Warning: using insecure memory!
gpg: Signature made Wed Dec 10 15:32:32 2008 CST using RSA key ID CB9B9EC5
gpg: Good signature from "William A. Ro

<think>我们之前讨论了如何配置本地仓库(cdrom.repo)并关闭GPG校验(gpgcheck=0)。现在用户的问题是:如何测试主机本地仓库是否关闭了GPG校验。 思路: 1. 直接查看仓库配置文件(如cdrom.repo)中的gpgcheck设置是最直接的方法。 2. 通过yum命令查看仓库详细信息,其中会包含gpgcheck的状态。 3. 尝试安装一个软件包(如果仓库中有),并观察是否进行GPG校验(如果不校验则不会报错,但这种方法不严谨,因为即使开启校验,如果密钥正确也不会报错)。 因此,我们推荐两种方法: 方法一:检查配置文件 直接查看/etc/yum.repos.d/目录下对应仓库配置文件(如cdrom.repo)中gpgcheck的值。 方法二:使用yum命令查看仓库信息 使用命令:`yum repoinfo <仓库id>` 或 `yum repoinfo` 查看所有仓库信息,其中会包含gpgcheck的状态。 步骤: 1. 首先确定仓库的id(即配置文件中[]内的名称),例如之前配置的仓库id是`cdrom-local`。 2. 运行命令:`yum repoinfo cdrom-local`,在输出信息中查找`Repo-pgp-check`一项,如果显示为0则表示关闭,1表示开启。 另外,也可以查看所有仓库的信息:`yum repolist -v`(输出详细,会包含gpgcheck状态) 详细步骤: 方法一:查看配置文件 ```bash # 查看cdrom.repo文件内容 cat /etc/yum.repos.d/cdrom.repo | grep gpgcheck ``` 如果输出有`gpgcheck=0`,则说明已关闭。 方法二:使用yum repoinfo命令 ```bash # 查看指定仓库的详细信息 sudo yum repoinfo cdrom-local ``` 在输出中寻找: ``` Repo-pgp-check : 0 ``` 如果为0,则关闭了GPG校验。 另外,也可以使用: ```bash sudo yum -v repoinfo cdrom-local | grep -i 'pgp-check' ``` 补充:如果想知道在安装软件包时是否会进行GPG校验,可以通过尝试安装一个软件包(如果仓库中有)并观察输出,如果关闭了GPG校验,则不会出现GPG密钥检查的相关信息。但这种方法不是直接检查配置,而且需要仓库中有软件包。 因此,推荐使用上述两种方法之一。 相关问题: 1. 如何临时启用或禁用某个仓库? 2. 如何查看系统中所有已配置的YUM仓库? 3. 如果GPG校验开启,但密钥不正确,该如何解决? </think>### 测试本地仓库是否关闭 GPG 校验的方法 以下是验证本地仓库 `gpgcheck` 状态的完整步骤: #### 方法 1:直接查看配置文件(推荐) ```bash # 查看 cdrom.repo 文件中的 gpgcheck 值 sudo grep "gpgcheck" /etc/yum.repos.d/cdrom.repo ``` - **预期输出**:`gpgcheck=0` 出现此结果表示已关闭 GPG 校验[^1]。 #### 方法 2:通过 YUM 工具验证 ```bash # 查看仓库详细信息 sudo yum repoinfo cdrom-local ``` **关键检查点**:在输出中查找: ``` Repo-pgp-check : 0 # ← 此值为 0 表示关闭校验[^2] ``` #### 方法 3:安装测试验证 ```bash # 尝试安装测试包(如 tar) sudo yum install tar --disablerepo="*" --enablerepo="cdrom-local" ``` - ✅ **成功安装**:无 GPG 警告 → `gpgcheck=0` - ❌ **出现警告**:提示 `GPG key retrieval failed` → 校验未关闭 #### 方法 4:调试模式检查 ```bash # 查看详细操作日志 sudo yum --verbose install nano --disablerepo="*" --enablerepo="cdrom-local" ``` 检查输出日志中是否包含: ```log D: repo: cdrom-local [...] gpgcheck=0 # ← 确认配置值 D: Skipping GPG check for package... # ← 确认跳过校验行为 ``` --- ### 验证流程图 ```mermaid graph TD A[开始验证] --> B[检查配置文件] A --> C[查看仓库信息] A --> D[安装测试包] A --> E[调试模式] B -->|gpgcheck=0| F[校验已关闭] C -->|Repo-pgp-check=0| F D -->|无GPG警告| F E -->|跳过GPG日志| F B -->|gpgcheck=1| G[校验未关闭] C -->|Repo-pgp-check=1| G D -->|出现GPG错误| G ``` --- ### 关键原理说明 当 `gpgcheck=0` 时: 1. YUM **不会验证**软件包的数字签名 2. 直接跳过 `RPM-GPG-KEY` 检查流程 3. 安装日志中不会出现 `GPG Keys` 相关操作记录 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值