GPG 密钥是什么
安装第三方软件包时报签名校验失败,本质是仓库公钥没有正确导入或指纹不匹配。正确做法是核对官方公布的指纹后再导入,而不是用跳过校验的参数绕过去,那等于放弃供应链验证。
基本信息
| 用途 | 管理仓库签名公钥与处理校验失败 |
|---|---|
| RPM 系 | 用 rpm --import 导入,按包查询已导入密钥 |
| DEB 系 | 现代方式是在仓库定义里用 signed-by 指向本地密钥环 |
| 关键动作 | 核对指纹,而不是绕过校验 |
典型使用场景
- 新增第三方仓库:先导入官方公钥再启用仓库
- 校验失败排查:核对指纹确认是同一把密钥,排除被替换的风险
- 迁移老系统:把旧的全局密钥管理换成按仓库指定密钥环
- 审计已导入密钥:定期列出系统里的公钥,清理不再使用的
- 离线环境:先把密钥文件拷进来再导入,不依赖外网
RPM 系操作
RPM 系操作
rpm --import https://example.com/RPM-GPG-KEY-example
rpm -qa gpg-pubkey* | head # 列出已导入的密钥包
rpm -qi gpg-pubkey-<keyid> # 查看密钥详情与时间
dnf install pkg --nogpgcheck # 仅用于受控测试,生产禁止DEB 系现代方式
DEB 系现代方式
curl -fsSL https://example.com/key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/example.gpg
ls -l /usr/share/keyrings/ | head
# 仓库定义引用:deb [signed-by=/usr/share/keyrings/example.gpg] https://... stable main两端操作对照
| 动作 | RPM 系 | DEB 系 |
|---|---|---|
| 导入密钥 | 导入密钥文件 | 下载后放入密钥环并转换格式 |
| 仓库引用 | 仓库配置无需额外声明 | 仓库定义里加密钥环指向 |
| 查看已导入 | 列出密钥包 | 查看密钥环目录 |
| 查看详情 | 查询密钥包信息 | 用密钥工具查看指纹 |
| 跳过校验 | 对应参数仅限测试 | 受信标记同样仅限测试 |
跳过校验的参数等于放弃供应链验证,只能用于受控测试环境,用完必须恢复。
从搜索结果页下载公钥导入是供应链事故的温床,只从官方文档给出的地址获取。
旧的全局密钥管理命令已被弃用,新系统改用按仓库指定密钥环的方式,不要照抄老教程。