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

时间:2021-02-04 06:18:14

标签: ssl kubernetes certificate tls1.2 kubernetes-ingress

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

感谢您抽出宝贵时间。

1 个答案:

答案 0 :(得分:1)

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

TLS definition from wikipedia

<块引用>

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


它在 Kubernetes 中扮演什么角色?

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


如果我不使用它会怎样?

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

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

此外,k8s 组件使用 tls 证书进行身份验证。这意味着例如为了让 kubelet 加入集群,它需要通过显示它具有由已知权威签名的有效证书来证明它被允许这样做(这通常意味着自签名)。您将无法验证 kubelet 是您的,而那不是我加入您的集群的恶意 kubelet。