Debian 12 包安全机制变更简述
在新版本 Debian 12 (Bookworm) 中,安全签名验证机制有了一些重要的改进,目的是提高包管理的安全性,避免设备因为不可靠源而遭到渗透。
主要的变更包括:
1. 静态 keyring 文件
以前,系统通过 /etc/apt/trusted.gpg
和 /etc/apt/trusted.gpg.d/
中的可信签名密钥来校验所有包源,但这种方式存在风险,文件权限过于宽松,可能被权限高的进程修改,而且对全部包源通用,有很大的风险面。
在 Debian 12 里,每个 APT 包源建议都使用独立的 keyring,并通过 sources.list
或 .list
文件中的 signed-by
参数指定,如:
deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ bookworm main
这种写法可以确保:
- 仅仅信任指定源,避免全局性影响
- 便于维护和检查,提高安全性
2. 公钥管理方式改变
对于新添包源,得自行下载并存放公钥(而不再是直接 apt-key add),如:
wget -O /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
这种做法是更安全的,避免未来 apt-key 废弃后造成乱。
3. 实际环境中的关键问题
实际使用过程中,如果包源没有按要求指定 signed-by
,而又缺少对应公钥,就会出现类似:
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY B188E2B695BD4743
遇到这种错误,需要按照源网站提供的方式下载公钥,且放至正确的 keyrings 目录,然后重新扫描系统:
sudo apt update
总结
Debian 12 安全机制的改进,令包管理更加井井有条,就是多了一些初始配置工作,但也为全体系统的安全性打下了更坚实的基础。
在最近有设备升级到 Debian 12 或者添加了第三方包源时,记得检查 signed-by
配置,并确保 keyring 是最新版本!