所有服务器都需要使用 HTTPS 协议吗?还是只需要面向公众的服务器?

所有服务器都需要使用 HTTPS 协议吗?还是只需要面向公众的服务器?

我有一个通过 HTTPS 运行的前端 Web 服务器 - 这是面向公众的 - 即端口是开放的。

我还有一个后端 API 服务器,我的网络服务器向其发出 API 请求 - 这是面向公众的并且需要身份验证 - 端口是开放的。

这两个服务器通过 HTTPS 运行。

API 服务器背后还有许多其他服务器。API 服务器反向代理这些服务器。这些其他服务器的端口不对传入流量开放。只能通过 API 服务器与它们通信。

我的问题......“许多其他服务器”是否需要通过 HTTPS 运行,或者,鉴于它们无法从外部访问,它们是否可以安全地通过 HTTP 运行?

我以为这是一个常见问题,但我找不到答案。谢谢。如果这是重复的,请告诉我正确的答案。

答案1

这是一个见仁见智的问题,也与监管问题有关(如果您遇到的话)。

即使目前没有必要,我也极力主张在任何应用程序级防火墙/负载平衡器/前端服务器和后端服务器之间启用 HTTPS。这样可以减少一个攻击面。随着更多敏感信息开始传递,我与需要转换的地方签订了合同 - 最好从那里开始。

我通常建议使用内部 CA(如果有)或自行签名(如果没有内部 CA)后端服务器。我们会将到期日期设置得比较长,以避免不必要的更改。

答案2

总结你应该加密流量除非它在同一主机上。

您不能信任您的网络。您自己网络中的恶意软件可以拦截/修改 http 请求。

这不是理论上的攻击,而是现实生活中的例子:

答案3

“许多其他服务器”是否需要通过 HTTPS 运行,或者考虑到它们无法从外部访问,它们是否可以安全地通过 HTTP 运行?

这实际上取决于您想要实现的目标。了解使用 HTTPS 的目的是保护两点之间传输的数据。如果您担心数据在网络内被嗅探,那么也许应该首先处理这个问题。如果您需要保护网络内传输的数据,那么您所说的是,您要么担心网络内传输数据的安全性,要么出于某些合规性相关原因需要加密传输中的数据。

这其实更像是一个意见问题,但答案是视情况而定。你想做什么?你加密的是哪种数据?你想防御哪些威胁?是否有法律要求(例如 PCI-DSS、HIPAA 等)要求你需要加密传输中的数据?如果数据是敏感数据,并且你担心在网络内传输时可能会被滥用,那么我建议与管理层一起解决问题。那么最后,你想保护什么,为什么要保护它?

答案4

如今,有了专门的 CPU 指令来加速加密,而新的传输协议在未加密的链接上根本无法运行或性能下降(HTTP/2、gRPC 等),也许更好的问题是:你有什么理由需要将网络链接降级到 HTTP?如果没有特定原因,那么答案是继续使用 HTTPS。

相关内容