【问题标题】:Istio Service Mesh TLS ConfigIstio 服务网格 TLS 配置
【发布时间】:2021-11-14 06:49:08
【问题描述】:

我正在尝试将在 k8s 上运行的 Istio 服务网格从 http 转换为 https,但偶然发现了许多问题。我真的不明白这样做所需的所有步骤。

据我所知,有 2 种流量需要在网格中使用 TLS:

  • 内部服务之间:通过 Istio 文档乱窜让我知道 Istio 会以某种方式自动配置服务之间的 mTLS,因此所有服务都可以安全地通信,而无需任何额外配置。但是,我仍然不明白他们是如何实现这个 mTLS 的。它与普通 TLS 有何不同,mTLS 在另一种流量(外部客户端到内部服务)中的作用是什么?

  • 从外部的客户端到内部的服务:这就是我不知道该怎么做的地方。我知道为了让服务拥有 TLS,它需要由受信任的 CA 提供的 TLS 证书。但是,由于外部客户端不会直接与内部服务对话,而只能通过 Istio 入口网关。我需要为每个服务提供证书还是只为入口网关提供证书?我的所有服务现在都为HTTP 公开端口 80。我需要将它们全部转换为端口 443 和 HTTPS 还是只需要入口网关就足够了?

关于证书,如果我现在只使用自签名证书,我是否可以使用 openssl 创建证书和密钥并从中创建机密(可能在命名空间之间使用 kubed 同步),然后所有服务都使用相同的证书和钥匙?到处都建议我使用cert-manager。不过不知道值不值得?

如果有人能用一些插图解释一下,我将非常感激。

【问题讨论】:

    标签: ssl kubernetes https kubernetes-ingress istio


    【解决方案1】:

    一般来说,如果您需要对 Istio 相关问题的良好解释(也有图片),我建议您查看文档。您可以在 Istio 中找到与 TLS 相关的 540 topics

    Istio 是一个文档齐全的服务。在这里您可以找到有关Understanding TLS Configuration 的更多信息。你也可以找到关于Mutual TLS Migration的好文章。

    但是我仍然不深入了解他们如何实现此 mTLS,它与普通 TLS 有何不同以及 mTLS 在另一种流量(外部客户端到内部服务)中的作用。

    Mutual TLS,简称 mTLS,是mutual authentication 的一种方法。 mTLS 通过验证他们都拥有正确的私有key 来确保网络连接每一端的各方都是他们声称的身份。他们各自的TLS certificates 中的信息提供了额外的验证。你可以阅读更多关于它的信息here。此外,您还可以查看有关HTTP Traffic 的页面(这种情况需要mTLS)。

    我的所有服务现在都为 HTTP 公开端口 80。我需要将它们全部转换为端口 443 和 HTTPS 还是只需要入口网关就足够了?

    可以创建Ingress Gateway without TLS Termination:

    Securing Gateways with HTTPS 任务描述了如何配置对 HTTP 服务的 HTTPS 入口访问。此示例描述如何配置对 HTTPS 服务的 HTTPS 入口访问,即配置入口网关以执行 SNI 直通,而不是对传入请求进行 TLS 终止。

    编辑(添加更多解释和文档链接):

    Service mesh 使用代理来拦截您的所有网络流量,允许基于您设置的配置的广泛的应用程序感知功能。

    Istio 使用 X.509 证书安全地为每个工作负载提供强身份。 Istio 代理与每个 Envoy 代理一起运行,与 istiod 一起工作以大规模自动化密钥和证书轮换。 following diagram 显示身份配置流程。

    Peer authentication:用于服务到服务的身份验证,以验证建立连接的客户端。 Istio 提供mutual TLS 作为传输身份验证的全栈解决方案,无需更改服务代码即可启用。

    支持的对等认证模式:PermissiveStrictDisable

    为了回答这个问题:

    我的所有服务现在都为 HTTP 公开端口 80。我需要将它们全部转换为端口 443 和 HTTPS 还是只需要入口网关就足够了?

    我们完全可以告知客户,使用 Istio Gateway 可以使用纯 HTTP、TLS 终止或 PASSTHROUGH TLS 模式将 Istio 服务网格中的服务公开到外部。可以改进传入的 TLS 终止(使用受信任的 CA 批准的 TLS 证书或使用带有 Istio 网关的 cert-manger)。您可以阅读有关此主题的更多信息here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-07
      • 1970-01-01
      • 2020-01-09
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 2020-05-07
      相关资源
      最近更新 更多