最终目标是:为一系列服务器安全地安装给定的软件包。
我们的服务器在不同的云数据中心上运行。我们将我们的应用程序作为deb
文件安装在它们上面。deb
目前,我们通过 ansible 脚本将更新作为文件上传。这很慢,因为“主”节点需要更新所有机器。
我们认为如果我们可以sudo apt update <package>
为每个节点发布会更好。
但是安全呢?回购服务器需要在互联网上。
因此,我们需要确保软件包安全安装。
deb
文件可以签名,但 afaikdpkg-verify
只验证签名是否正确。因此,恶意但正确签名的包将通过验证检查。
我们也可以
- 从 https 存储库服务器安装
- 仅安装仅使用特定密钥签名的签名包(仅适用于我们的应用程序
deb
)
只要不损害安全性,另一种方法是可以接受的。
如果您使用
apt install
ansibleapt
模块来安装软件包,则 repo 元数据必须由您的系统已知的密钥签名,例如 Ubuntu 分发签名密钥,或您使用apt_key
ansible 模块显式添加的任何密钥。任何由未知密钥签名或未签名的内容都将被拒绝。所以你可以创建一个 apt 存储库来保存你的包,用你自己的 GPG 密钥签署它的发布文件,然后将该公钥分发到你的服务器。