CentOS 7下Google Chrome RPM签名验证失败,如何提取RPM签名以手动验证?
CentOS 7下Google Chrome RPM签名验证失败,如何提取RPM签名以手动验证?
针对你遇到的CentOS 7上Google Chrome RPM签名验证失败的问题,以及想要提取签名手动验证的需求,我整理了具体的解决方法:
问题根源
你碰到的核心问题是CentOS 7自带的RPM版本(通常是4.11.x系列)存在功能局限性——它不支持验证RPM使用的子密钥签名。这就是为什么即使你正确导入了Google的公钥,yum仍然会抛出签名验证失败的错误。
提取RPM签名到ASC文件的方法
要从Chrome的RPM包中提取出可用于GPG手动验证的ASC格式签名,执行以下命令即可:
rpm -qp --qf '%{SIGTAG_GPG:armor}\n' google-chrome-stable_current_x86_64.rpm > chrome-rpm-signature.asc
这条命令会将RPM内嵌的GPG签名以ASCII Armor格式输出到chrome-rpm-signature.asc文件中,这正是你需要的独立签名文件。
手动验证签名的完整步骤
拿到签名文件后,按照以下步骤完成手动验证:
- 导入Google的签名公钥
先获取Google的Linux软件签名公钥(可从官方Linux软件源渠道获取内容),保存为linux_signing_key.pub文件后,导入到本地GPG密钥环:gpg --import linux_signing_key.pub - 验证签名与RPM内容的一致性
使用GPG工具验证提取的签名与RPM包内容的匹配性:
如果验证通过,GPG会输出类似gpg --verify chrome-rpm-signature.asc <(rpm -qp --qf '%{SIGTAG_GPG:plaintext}\n' google-chrome-stable_current_x86_64.rpm)Good signature from "Google, Inc. Linux Package Signing Key <linux-packages-keymaster@google.com>"的提示,说明该RPM确实由Google的合法签名密钥签署。
关于你之前尝试的命令的说明
你之前使用的rpm -qp --qf '%|SIGTAG_GPG?{%{SIGTAG_GPG:pgpsig}}:{(none)}|}|\n'命令,确实只能获取到签名所用的密钥ID(属于RPM元数据),而非实际的加密签名数据。你的理解是对的——这个ID仅能告知你RPM声称的签名密钥,无法直接用来验证文件的真实性。
临时安装 workaround(可选)
如果需要快速完成Docker环境下的安装,且能接受临时的安全妥协,可以在yum install命令后添加--nogpgcheck参数跳过签名验证,但更推荐先完成手动签名验证后再执行安装操作。
备注:内容来源于stack exchange,提问作者Keegan
相关产品推荐
相关产品推荐

