F5 或 ZUUl/Eureka/Services 处的 SSL 终止?

标签 ssl spring-boot netflix-zuul spring-cloud-netflix f5

我们在我们的环境中使用 Spring Cloud Netflix、Eureka 和 Zuul 运行了一些服务。此外,我们使用 Spring Boot 来开发服务。

我们还将 F5 作为硬件负载均衡器,它接收外部请求并根据配置的规则将它们路由到 ZUUL 实例之一。

到目前为止,我们使用 HTTP 进行服务之间的通信。我们现在希望通过 HTTPS 保护所有通信。

包括 ZUUL 和 Eureka 在内的所有服务都在不同的机器上扩展了 2 个实例以进行故障转移。

我的问题是我应该为每个服务设置和启用 HTTPS,包括 Eureka、ZUUL 和其他下游服务(或者)是否可以只对 F5 使用 HTTPS。并将其他实例留在 HTTP 本身。

我听说大多数负载均衡器都提供一种称为 SSL 终止/卸载的功能。我不确定 F5 是否支持它。如果它支持,那么只将它用于 HTTPS 并将其余部分留在 HTTP 中是否有意义。

我觉得这可以降低为每个实例设置 SSL 的复杂性(将来可能会根据负载发生变化),还可以降低 SSL 解密和加密固有的缓慢性。

我应该保护每个实例,包括 eureka/zuul 和下游服务,还是只在 F5 上执行 ssl 终止。

最佳答案

如果后端端点是 HTTPS,则负载均衡器需要在 TCP 层进行负载均衡,因为它们无法检查内容。如果负载均衡器端点本身是 HTTPS,那么加密内部流量通常没有什么意义,负载均衡器可以检查流量并做出明智的决定将流量路由到哪里(例如粘性 session )。如果应用程序端点需要知道原始请求是 HTTPS(通常是这种情况),则将 HTTP header 添加到内部分支以宣传这一点,事实上的约定是 X-FORWARDED-PROTO标题。

如果您选择让 LB 到应用的路径畅通无阻,那么您需要确保该段是可信的,并且您的应用端点无法绕过 LB 直接访问。

关于F5 或 ZUUl/Eureka/Services 处的 SSL 终止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43424744/

相关文章:

Java MTLS 主题和发行者顺序

java - saveAll() 太慢了。带 Spring 启动的 Cassandra 数据库。为什么?

java - jackson 错误: Cannot deserialize instance of `java.lang.String` out of START_ARRAY token

java - 在gradle多项目中,如何构建单个jar并将其发布到maven?

spring - Nginx 使用端口更改重写正则表达式

spring-security - spring security client_credentials grant_type - 支持刷新 token

spring-cloud - 如何在 Zuul 中使用基于 regexmapper 的路由? PatternServiceRouteMapper 不起作用?

apache - 使用 drupal 将 SSL http 重定向到 https

使用自签名证书的 Java Rest Client

ssl - kafka - ssl握手失败