我试图将运行在k8s上的Istio服务网格从http转换为https,但遇到了许多问题。我真的不明白要这么做需要采取什么步骤。
据我所知,有两种流量需要一个网格中的TLS:
HTTP的端口80。我是否需要将它们全部转换为端口443和HTTPS,还是仅仅通过入口网关就足够了?关于证书,如果我现在只使用自签名证书,我可以用openssl创建证书和密钥并从它创建秘密(可能在名称空间与kubed之间同步),那么所有服务都使用相同的证书和密钥吗?到处都建议我使用cert-manager。但是,我不知道这是不是值得的努力?
如果有人能用一些插图来解释的话,我真的很感激。
发布于 2021-09-21 07:57:23
通常,如果您需要很好地解释与Istio相关的问题(也包括图片),我建议您查看文档。您可以在Istio找到与TLS相关的540个专题。
Istio是一个非常有文档的服务。在这里,您可以找到有关理解TLS配置的更多信息。您还可以找到关于相互TLS迁移的好文章。
但是,我仍然不太清楚他们是如何实现这个mTLS的,它与普通的TLS有什么不同,以及mTLS在其他类型的通信中扮演什么角色(客户端到内部服务)。
mTLS是用于相互认证的一种方法。mTLS通过验证它们都拥有正确的私有钥匙来确保网络连接的每一端的各方都是他们声称的那个人。它们各自的TLS证书中的信息提供了额外的验证。您可以阅读更多关于它的这里。另外,yo还可以看到关于HTTP流量的页面(本例中需要mTLS)。
我的所有服务现在都公开了HTTP的端口80。我是否需要将它们全部转换为端口443和HTTPS,还是仅仅通过入口网关就足够了?
创建无TLS终端的入口网关是可能的
用HTTPS保护网关任务描述了如何配置HTTPS对HTTP服务的入口访问。此示例描述如何配置对HTTPS服务的HTTPS入口访问,即配置入口网关以执行SNI传递,而不是对传入请求执行TLS终止。
编辑(添加了更多解释和文档链接):
服务网格使用代理拦截所有网络流量,允许基于所设置的配置具有广泛的应用程序感知特性。Istio使用X.509证书安全地为每个工作负载提供强大的身份。Istio代理与每个特使代理一起运行,与istiod合作,在规模上实现密钥和证书轮换的自动化。跟随图显示身份配置流。对等身份验证:用于验证建立连接的客户端的服务到服务身份验证。Istio提供相互TLS作为传输身份验证的完整堆栈解决方案,它可以在不需要更改服务代码的情况下启用。
支持的对等身份验证模式:Permissive、Strict和Disable。
为了回答这个问题:
我的所有服务现在都公开了HTTP的端口80。我是否需要将它们全部转换为端口443和HTTPS,还是仅仅通过入口网关就足够了?
我们完全可以通知客户,使用Istio可以使用纯HTTP、TLS终止或传递TLS模式将从Istio服务网格到外部的服务公开。传入的TLS终端可以得到改进(使用由可信CA批准的TLS证书或使用带有Istio网关的证书管理器)。您可以阅读更多关于这个主题的这里。
https://stackoverflow.com/questions/69256498
复制相似问题