答案1
这取决于您的部署环境,但我认为“在所有事物上都使用 TLS”是最佳实践。您可以在代理信任的 Web 服务上使用内部或自签名证书,然后在与世界通信的代理上使用单个“真实”证书。
如果你有一个受保护的网络,在一个受保护的数据中心,没有被窥探的可能性,那么只对外部世界使用 HTTPS,在内部使用未加密的 HTTP 可能没问题。请特别注意这些标准排除任何类似 AWS 或共享托管提供商的东西,您都没有自己专用的受保护网络基础设施。
和让我们加密现在,在公测版中,证书安装是免费的、自动化的且简单的。因此,只需对所有事物执行 TLS,并将纯 HTTP 调用重定向到 HTTPS。
答案2
乍一看,选择一似乎更安全,但具体情况要视情况而定。
我更喜欢第二种(稍后查看安全隐患),在一个中心位置确保终止更容易,并且在安全性方面,解决方案越复杂,出错的可能性就越大。
注意事项,
您可以将代理与您的应用程序放在同一台机器上,在这种情况下,两种解决方案都具有相同的安全隐患。
不同的机器,假设 fe1 是代理,be1 是应用程序所在的位置。在这种情况下,您可以选择信任 fe1 -> be1 链接或不信任该链接,如果您选择不信任该链接,则可以使用自签名或公司内部 CA 颁发的证书,这样您就不必为证书付费,并根据您的内部政策决定期限和信任。
我通常选择在代理上完成 SSL/TLS 终止。