1. 问题现象与背景解析
最近在Ubuntu 24.04系统上执行sudo apt update时,不少用户遇到了一个特殊警告提示:"N: 对‘http://cz.archive.ubuntu.com/ubuntu’在sources.list(5)一项中缺失了Signed-By"。这个看似无害的提示背后,实际上反映了Ubuntu新版本在软件源安全验证机制上的重要变化。
作为从Ubuntu 22.04就开始使用APT包管理系统的老用户,我注意到这个报错在24.04版本中首次高频出现。经过分析,这是Ubuntu为了增强软件源安全性而引入的严格验证机制——所有通过HTTPS连接的官方软件源现在必须明确指定用于验证的GPG密钥(即Signed-By字段)。这种变化虽然增加了安全性,但也导致了许多用户更新系统时遇到困惑。
注意:这个警告不会阻止apt的正常运作,但忽略它可能导致未来无法验证软件包的真实性,存在潜在安全风险。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 问题根源深度剖析
2.1 Signed-By字段的作用机制
Signed-By是Debian/Ubuntu软件源配置中的关键安全字段,它指定了用于验证该软件源发布包签名的GPG公钥。当APT从软件源下载软件包时,会:
- 使用该字段指定的密钥验证软件包签名
- 确保软件包确实来自受信任的发布者
- 防止中间人攻击或镜像站被篡改的风险
在Ubuntu 24.04之前,系统会默认使用系统全局信任的密钥环(/etc/apt/trusted.gpg.d/)中的密钥进行验证。但新版本要求每个软件源显式声明其使用的签名密钥,这提供了更细粒度的安全控制。
2.2 配置文件结构解析
Ubuntu的软件源配置文件主要存放在两个位置:
/etc/apt/sources.list(主配置文件)/etc/apt/sources.list.d/目录下的.list文件(附加配置)
一个完整的软件源条目应该包含以下字段:
code复制Types: deb/deb-src
URIs: 镜像站URL
Suites: 发行版代号(jammy等)
Components: main/restricted等
Signed-By: GPG密钥路径
缺失Signed-By字段时,APT虽然仍能工作,但会发
