如何使用 Apache2 和多个 Docker 容器正确设置 SSL?

如何使用 Apache2 和多个 Docker 容器正确设置 SSL?

我打算使用单个服务器 droplet 创建以下设置:

在此处输入图片描述

  • 我想要实现的是仅使用通配符证书为我的 Apache2 Web 服务器设置一次 SSL / HTTPS,如上所示。
  • 此外,我想为 Apache2 配置多个子域,通过 ProxyPass 将流量引导到各个端口,每个端口映射到不同的 Docker 容器,这次使用 HTTP 而不是 HTTPS(如上所示)。
  • 此外,我还为 Apache2 设置了“重定向永久文件”,以确保例如http://x.domain.com总是重定向到https://x.domain.com

我认为这种配置的主要优点是我无需担心任何类型的 SSL 配置在 Docker 容器内/在 Docker 容器内运行的应用程序。此外,配置更多子域并运行其他容器也非常容易,所有这些都支持开箱即用的 SSL/HTTPS。

现在我的问题是

  • 上述设置是否合理,还有什么可以改进的吗?
  • 是否存在任何安全问题?
  • 目前,仍然可以在浏览器中直接输入例如“http://x.domain.com:6000”,这样 SSL/HTTPS 就会被绕过。从安全角度来看,这样做是否存在问题?如果存在,我该如何防止这种情况发生?

答案1

是的,这看起来是个不错的配置。除了问题 3 中的问题外,我没有发现任何明显的问题。

让连接通过的唯一问题http://*.domain.com:6xxx是它是 HTTP,而不是 HTTPS。为了防止这种情况,您也可以重定向这些连接:

RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com$
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%1.domain.com$1

相关内容