需要的建议:在同一主机上的多个 Web 服务之间共享 LE 通配符证书时的最佳实践
Advice needed: Best practice when sharing LE wildcard certificate between multible web-services on the same host
我需要你的建议。从 opsec 的角度来看,在同一主机上的多个 Web 服务之间共享 LE 通配符证书时,最好的方法是什么?
我的设置是这样的:
- 在我的域中,我有一个自动更新的 LE 通配符证书(容器化)
- 持有证书的文件夹被映射到主机文件夹,由 LE-user:LE-group 拥有并分配了 700 个权限
- 所有子域都指向同一主机上的 Web 服务(全部容器化)
- 所有 public 可访问的服务都由 Nginx 反向代理(容器化)处理,因此它们都是下游的 LE SSL 加密
- 管理服务(portainer、adminer、cockpit 等)只能从 LAN 访问,并且都受强大且唯一的密码保护
我的问题:
我想用 LE 通配符证书保护上述管理服务,因为我厌倦了必须确认我“接受风险”,因为他们使用的是自签名证书,但我在怀疑实现此目标的最佳方法是什么。
到目前为止,我看到了三种可能的解决方法,它们都有自己的缺点:
- 创建一个由 cron-job 执行的脚本,该脚本在证书更新时将 LE 证书复制到各种管理服务证书文件夹。
- 缺点:脚本需要运行具有root权限
- 允许管理服务访问主机映射文件夹中的证书。
- 缺点:我需要 704 访问 LE 证书文件夹或 740 并将所有管理员服务用户添加到 LE 组
- 通过反向代理服务管理服务,启用 TOTP 保护并限制对服务器 public IP 的访问。
- 缺点: 如果我搞砸了,或者我的 Nginx 或 TOTP 安装中有零日漏洞,管理服务 public 可以访问
从 opsec 的角度来看,您认为上述哪些解决方案是“最佳实践”解决方案,或者您会建议一个我没有考虑过的完全不同的解决方案?
非常感谢!
考虑以下几点:
使用类似 openssl 的东西创建合法的本地 CA 根证书。
使用它,合法地签署您将用于管理服务的服务器证书,并配置 Admin-Services SSL 端点以使用该证书。
确保您的 CA 根证书位于您连接到管理服务的机器的受信任的 CA 证书证书库(又名信任库)中。
以这种方式创建的证书只有一个不受信任的根 CA,直到您在连接机器的信任库中明确信任它(即步骤 #3)。现在的额外好处是,您可以在需要时过期任一证书,而不是像 LE 通配符证书那样每 3 个月过期一次。
资源:https://deliciousbrains.com/ssl-certificate-authority-for-local-https-development/
我需要你的建议。从 opsec 的角度来看,在同一主机上的多个 Web 服务之间共享 LE 通配符证书时,最好的方法是什么?
我的设置是这样的:
- 在我的域中,我有一个自动更新的 LE 通配符证书(容器化)
- 持有证书的文件夹被映射到主机文件夹,由 LE-user:LE-group 拥有并分配了 700 个权限
- 所有子域都指向同一主机上的 Web 服务(全部容器化)
- 所有 public 可访问的服务都由 Nginx 反向代理(容器化)处理,因此它们都是下游的 LE SSL 加密
- 管理服务(portainer、adminer、cockpit 等)只能从 LAN 访问,并且都受强大且唯一的密码保护
我的问题:
我想用 LE 通配符证书保护上述管理服务,因为我厌倦了必须确认我“接受风险”,因为他们使用的是自签名证书,但我在怀疑实现此目标的最佳方法是什么。 到目前为止,我看到了三种可能的解决方法,它们都有自己的缺点:
- 创建一个由 cron-job 执行的脚本,该脚本在证书更新时将 LE 证书复制到各种管理服务证书文件夹。
- 缺点:脚本需要运行具有root权限
- 允许管理服务访问主机映射文件夹中的证书。
- 缺点:我需要 704 访问 LE 证书文件夹或 740 并将所有管理员服务用户添加到 LE 组
- 通过反向代理服务管理服务,启用 TOTP 保护并限制对服务器 public IP 的访问。
- 缺点: 如果我搞砸了,或者我的 Nginx 或 TOTP 安装中有零日漏洞,管理服务 public 可以访问
从 opsec 的角度来看,您认为上述哪些解决方案是“最佳实践”解决方案,或者您会建议一个我没有考虑过的完全不同的解决方案?
非常感谢!
考虑以下几点:
使用类似 openssl 的东西创建合法的本地 CA 根证书。
使用它,合法地签署您将用于管理服务的服务器证书,并配置 Admin-Services SSL 端点以使用该证书。
确保您的 CA 根证书位于您连接到管理服务的机器的受信任的 CA 证书证书库(又名信任库)中。
以这种方式创建的证书只有一个不受信任的根 CA,直到您在连接机器的信任库中明确信任它(即步骤 #3)。现在的额外好处是,您可以在需要时过期任一证书,而不是像 LE 通配符证书那样每 3 个月过期一次。
资源:https://deliciousbrains.com/ssl-certificate-authority-for-local-https-development/