需要的建议:在同一主机上的多个 Web 服务之间共享 LE 通配符证书时的最佳实践

Advice needed: Best practice when sharing LE wildcard certificate between multible web-services on the same host

我需要你的建议。从 opsec 的角度来看,在同一主机上的多个 Web 服务之间共享 LE 通配符证书时,最好的方法是什么?

我的设置是这样的:

我的问题:

我想用 LE 通配符证书保护上述管理服务,因为我厌倦了必须确认我“接受风险”,因为他们使用的是自签名证书,但我在怀疑实现此目标的最佳方法是什么。 到目前为止,我看到了三种可能的解决方法,它们都有自己的缺点:

  1. 创建一个由 cron-job 执行的脚本,该脚本在证书更新时将 LE 证书复制到各种管理服务证书文件夹。
    • 缺点:脚本需要运行具有root权限
  2. 允许管理服务访问主机映射文件夹中的证书。
    • 缺点:我需要 704 访问 LE 证书文件夹或 740 并将所有管理员服务用户添加到 LE 组
  3. 通过反向代理服务管理服务,启用 TOTP 保护并限制对服务器 public IP 的访问。
    • 缺点: 如果我搞砸了,或者我的 Nginx 或 TOTP 安装中有零日漏洞,管理服务 public 可以访问

从 opsec 的角度来看,您认为上述哪些解决方案是“最佳实践”解决方案,或者您会建议一个我没有考虑过的完全不同的解决方案?

非常感谢!

考虑以下几点:

  1. 使用类似 openssl 的东西创建合法的本地 CA 根证书。

  2. 使用它,合法地签署您将用于管理服务的服务器证书,并配置 Admin-Services SSL 端点以使用该证书。

  3. 确保您的 CA 根证书位于您连接到管理服务的机器的受信任的 CA 证书证书库(又名信任库)中。

以这种方式创建的证书只有一个不受信任的根 CA,直到您在连接机器的信任库中明确信任它(即步骤 #3)。现在的额外好处是,您可以在需要时过期任一证书,而不是像 LE 通配符证书那样每 3 个月过期一次。

资源:https://deliciousbrains.com/ssl-certificate-authority-for-local-https-development/