首页 > 解决方案 > 什么是 TLS,我们为什么需要它?

问题描述

什么是 TLS,我们为什么需要它。有人可以向我解释一下它在 Kubernetes 中扮演什么角色吗?如果我不使用它会发生什么?有人可以用一个例子向我解释吗?

感谢您的时间。

标签: sslkubernetescertificatetls1.2kubernetes-ingress

解决方案


什么是 TLS,我们为什么需要它?

来自维基百科的 TLS 定义

TLS 协议主要旨在提供两个或多个通信计算机应用程序之间的隐私和数据完整性 [...] TLS 支持许多不同的方法来交换密钥、加密数据和验证消息完整性。


它在 Kubernetes 中扮演什么角色?

k8s 控制平面使用它来加密传输中的数据。如果在数据在客户端和服务器之间移动时通信被截获,传输中的加密可以保护您的数据。在 k8s 的情况下,例如 kubelet 或控制器管理器通常是客户端,而 api-server 被视为服务器。


如果我不使用它会发生什么?

我不确定你是否可以这样做(不要使用它)。我认为它的使用是由 k8s 组件强制执行的。您所能做的就是忽略证书验证。

但是现在让我们想象一下,您设法在没有 tls 的情况下启动了一个集群,并且所有通信现在都是基于明文的(这意味着没有加密)。现在,如果我设法拦截通信,我(恶意行为者)可以看到您发送到集群的内容。而且由于没有强制执行数据完整性的机制,我可以将这些数据更改为我想要的任何内容并将其传递。您将无法检查您是否正在与集群或与我交换数据,以及我是否正在更改数据、添加恶意代码或其他。

此外,tls 证书被 k8s 组件用于身份验证目的。这意味着,例如,为了让 kubelet 加入集群,它需要通过显示它有一个由已知机构签名的有效证书(这通常意味着自签名)来证明它被允许这样做。您将无法验证 kubelet 是否属于您,这不是我加入您的集群的恶意 kubelet。


推荐阅读