最佳实践是什么:Web服务级别还是代理级别的 HTTPS?

最佳实践是什么:Web服务级别还是代理级别的 HTTPS?

最近,我不得不部署几个 Web 应用,比如詹金斯或者jupyter. 这些应用程序必须通过 HTTPS 提供服务。

我想知道在每个应用程序上配置 HTTPS(监听端口、ssl 证书等)是否更好,或者运行默认配置并使用反向代理强制 HTTPS,例如nginx

我觉得第二种解决方案更实用,但从安全角度来看我可能忽略了一些东西。

答案1

这取决于您的部署环境,但我认为“在所有事物上都使用 TLS”是最佳实践。您可以在代理信任的 Web 服务上使用内部或自签名证书,然后在与世界通信的代理上使用单个“真实”证书。

如果你有一个受保护的网络,在一个受保护的数据中心,没有被窥探的可能性,那么只对外部世界使用 HTTPS,在内部使用未加密的 HTTP 可能没问题。请特别注意这些标准排除任何类似 AWS 或共享托管提供商的东西,您都没有自己专用的受保护网络基础设施。

让我们加密现在,在公测版中,证书安装是免费的、自动化的且简单的。因此,只需对所有事物执行 TLS,并将纯 HTTP 调用重定向到 HTTPS。

答案2

乍一看,选择一似乎更安全,但具体情况要视情况而定。

我更喜欢第二种(稍后查看安全隐患),在一个中心位置确保终止更容易,并且在安全性方面,解决方案越复杂,出错的可能性就越大。

注意事项,

  • 您可以将代理与您的应用程序放在同一台机器上,在这种情况下,两种解决方案都具有相同的安全隐患。

  • 不同的机器,假设 fe1 是代理,be1 是应用程序所在的位置。在这种情况下,您可以选择信任 fe1 -> be1 链接或不信任该链接,如果您选择不信任该链接,则可以使用自签名或公司内部 CA 颁发的证书,这样您就不必为证书付费,并根据您的内部政策决定期限和信任。

我通常选择在代理上完成 SSL/TLS 终止。

相关内容