我有一些内部可用的服务器(所有 Debian),它们共享 LetsEncrypt 通配符证书(*.local.example.com)。一台服务器(Server1)使证书保持最新,现在我正在寻找一个过程来自动将 .pem 文件从 Server1 分发到其他服务器(例如 Server2 和 Server3)。
我不允许通过 SSH 进行 root 登录,所以我相信我需要一个中间用户。
我考虑过在 Server1 上使用 cronjob 将更新的 .pem 文件复制到用户目录,其中非特权用户通过另一个 cronjob 使用 scp 或 rsync (私钥身份验证)将文件复制到 Server2/3。但是,为了使该过程更加安全,我想限制 Server2/3 上的用户权限,使其能够 chroot 到其主目录,并且只允许他们使用 scp 或 rsync。看起来这不是一个简单的配置,大多数方法都已经过时、有缺陷或需要大量设置(rbash、forcecommand、chroot,...)。
我还考虑过将协议更改为 sftp,这应该允许我通过 OpenSSH 使用受限的 sftp 环境,但我没有经验。
另一种想法是使用 API 端点(例如 FastAPI,它已在 Server1 上运行)或只是通过 HTTPS 与 Server1 上的自定义 API-Secrets 或 mTLS 进行 Web 服务器,以允许 Server2/3 检索 .pem 文件。
目前,API/网络服务器方法似乎最合理且最不复杂,但感觉不必要地复杂。我更喜欢不需要额外软件的解决方案。
Server1 具有 .pem 文件(由 root 拥有),Server2/3 需要定期更新这些文件(root 拥有的位置)。我可以使用什么方法以安全的方式自动分发这些文件?
我已经选择了仅 rsync 用户,该用户只能使用 ssh-keys 将数据 rsync 到预定义目录(https://gist.github.com/jyap808/8700714)。然后使用 cronjob 将文件移动到目标服务器上。
您可以看看是否可以找到一个CMS或EST服务器,允许将相同的证书分发到多个节点而不是生成唯一密钥?使用为此目的设计的协议可能有好处。