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