新版apt流程下如何正确加载Apache Ignite的apt-key公钥?
修复Apache Ignite APT源legacy密钥弃用告警
执行sudo apt update时出现的该告警,本质是旧安装步骤使用已废弃的apt-key工具将密钥存入了全局弃用路径,以下是完全符合新版APT规范的替换流程,全程无需使用apt-key:
操作步骤
- 清理旧的遗留密钥(避免重复配置导致告警残留)
执行命令删除之前导入到legacy路径的Ignite密钥:sudo apt-key del 0EE62FB37A00258D - 创建APT官方推荐的第三方密钥存储目录
该路径在APT 2.4及以上版本为默认第三方密钥目录,低版本APT也可兼容使用:sudo mkdir -p /etc/apt/keyrings - 从hkp协议密钥服务器拉取指定密钥并导出为兼容格式
由于wget不支持hkp协议,直接使用gpg工具拉取密钥ID为0EE62FB37A00258D的公钥,导出为二进制OpenPGP格式(后缀为.gpg,兼容所有APT版本,适配性优于ASCII格式的.asc文件):# 临时拉取密钥到临时密钥环 gpg --no-default-keyring --keyring /tmp/ignite-temp.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0EE62FB37A00258D # 导出公钥到系统密钥目录 sudo gpg --no-default-keyring --keyring /tmp/ignite-temp.gpg --export --output /etc/apt/keyrings/apache-ignite.gpg # 设置正确的读权限 sudo chmod 644 /etc/apt/keyrings/apache-ignite.gpg # 清理临时文件 rm /tmp/ignite-temp.gpg - 配置Ignite源并绑定对应密钥
找到已有的Ignite源配置文件(通常路径为/etc/apt/sources.list.d/apache-ignite.list),将原有源行:
修改为带deb http://apache.org/dist/ignite/deb/ apache-ignite mainsigned-by参数的版本,将密钥和源做绑定(该方式为官方推荐的最小权限配置,避免第三方密钥被全局信任带来安全风险):
也可以直接执行sed命令一键替换,无需手动编辑文件:deb [signed-by=/etc/apt/keyrings/apache-ignite.gpg] http://apache.org/dist/ignite/deb/ apache-ignite main
如果之前从未添加过Ignite源,直接执行以下命令新建源配置文件即可:sudo sed -i 's|deb http://apache.org/dist/ignite/deb/|deb [signed-by=/etc/apt/keyrings/apache-ignite.gpg] http://apache.org/dist/ignite/deb/|' /etc/apt/sources.list.d/apache-ignite.listecho "deb [signed-by=/etc/apt/keyrings/apache-ignite.gpg] http://apache.org/dist/ignite/deb/ apache-ignite main" | sudo tee /etc/apt/sources.list.d/apache-ignite.list - 验证修复效果
执行更新命令:
此时不会再出现legacy keyring相关的警告。sudo apt update
补充说明
- 不建议直接将第三方密钥放入
/etc/apt/trusted.gpg.d/且不配置signed-by参数,该方式会让第三方密钥对系统内所有软件源生效,存在签名伪造的安全风险。 - 若使用deb822格式的源配置(APT 2.4+支持),也可以直接将ASCII格式的公钥内容写入源配置文件,无需单独存储密钥文件,普通场景下使用上述二进制密钥+signed-by的方式兼容性最好。
内容的提问来源于stack exchange,提问作者will
相关产品推荐
相关产品推荐

