最佳做法是什么:在web服务级别或代理级别使用HTTPS?

现在我不得不部署几个Web应用程序,比如Jenkins或者jupyter 。 这些应用程序必须通过HTTPS提供。

我想知道是否最好在每个应用程序(侦听端口,SSL证书等)上configurationHTTPS,或者运行默认configuration,并使用像nginx这样的反向代理来强制HTTPS。

我觉得第二个解决scheme更实用,但是从安全的angular度来看,我可能错过了一些东西。

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

如果您有一个受保护的networking,在受保护的数据中心内,不可能侦听,那么只对外部HTTPS和内部未encryption的HTTP可能没有问题。 请注意,这些标准特别排除了AWS或共享主机提供商等任何您没有自己的专用受保护networking基础架构的情况。

现在让我们在公开testing版中进行encryption ,证书安装是免费的,自动的,并且简单。 所以,只要对所有事情做TLS,然后将简单的HTTP调用redirect到HTTPS。

乍一看似乎更安全一些,但这取决于。

我更喜欢第二个(稍后参见安全含义),在一个中心位置安全终止更容易,安全性越高,解决scheme越复杂,出错的可能性越大。

注意事项,

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

  • 不同的机器,比如说fe1是代理,be1是应用程序所在的地方。 在这种情况下,您可以select信任fe1 – > be1链接,如果您select不信任该链接,您可以使用自签名或公司明智的内部CA排放证书,因此您不必为支付证书而决定持续时间和信任基于您的内部政策。

我会通常在代理上进行SSL / TLS终止。