TLS使用指南(一):如何在Rancher 2.x中进行TLS终止?

栏目: IT技术 · 发布时间: 4年前

内容简介:引 言这是一个系列文章,我们将在本系列中探索Rancher使用TLS证书的不同方式。TLS,安全传输层协议,是用于保护网络通信的加密协议。它是目前已经弃用的安全套接层(SSL)的继任者。

R

本周四晚20:30,k3s首季在线培训第一期准时开播!一节课带你全面了解 k3s的发展历程、基本架构以及未来的研发计划 ~赶紧点击【阅读原文】或在浏览器输入以下链接报名吧!

http://z-mz.cn/Pmrc

TLS使用指南(一):如何在Rancher 2.x中进行TLS终止?

引 言

这是一个系列文章,我们将在本系列中探索Rancher使用TLS证书的不同方式。TLS,安全传输层协议,是用于保护网络通信的加密协议。它是目前已经弃用的安全套接层(SSL)的继任者。

你可以从本系列中了解TLS如何集成到各种Rancher组件中以及如何准备环境以正确利用Rancher中的TLS。

TLS使用指南(一):如何在Rancher 2.x中进行TLS终止?

为什么安全传输层协议(TLS)很重要?

Rancher在任何地方都可以使用TLS。因此,在安装Rancher之前,确定TLS终止选项十分重要。

1、 确认你想要执行的TLS终止类型,有以下几种类型:

  • 自签名,由Rancher终止(这是默认的)

  • Let’s Encrypt,由Rancher终止

  • 自带证书,由Rancher终止

  • 外部TLS终止

2、 如果你选择了自带证书或外部TLS终止,那么请确保你有用于注册证书的CA证书的副本(仅需cert,不需要密钥)。Rancher在执行操作时需要这一文件。

3、 确保你知道Rancher要使用的主机名。这在安装之后不可更改。

建议你通过阅读文档来了解更多的细节:

https://docs.rancher.cn/

TLS使用指南(一):如何在Rancher 2.x中进行TLS终止?

什么组件需要安全传输层协议

对于任何企业软件来说,你都需要在安装和使用之前确定特定的要求,包括存储要求、网络、在云端还是本地等等。在进行安装之前,你必须得明确回答这些问题。

对于Rancher来说,考虑因素之一是TLS。必须了解并计划使用Rancher进行TLS的方法,如此才能获得能够充分支持并且拥有良好功能的解决方案。

除了HTTPS安全之外,还有其他两个地方也十分需要TLS:

1、 kubectl

2、 节点和集群agent通信

注意,并不止以上两个地方会使用到TLS,只是上述两个地方更为常见。

TLS使用指南(一):如何在Rancher 2.x中进行TLS终止?

理解kubectl TLS

首先,我们来看一下示例 kubeconfig 文件:

apiVersion: v1

kind: Config

clusters:

- name: "sample"

cluster:

server: "https://rancher.example.org/k8s/clusters/c-1234"

certificate-authority-data: "LS0t..."

特别注意 certificate-authority-data 的存在。该字段是CA证书的base64编码版本,这一CA证书可用于对Kubernetes API服务器提供的TLS证书进行签名。或者是Rancher在代理调用 kube-apiserver 时提供的TLS证书。

为什么这个如此重要呢?因为kubectl使用 certificate-authority-data 来确保是你(而不是冒名顶替者)正在连接到正确的集群。如果服务器提供的证书尚未由 certificate-authority-data 中的证书签名,那么kubectl会警告你并且退出。基本上,你不会遭受MITM(中间人)攻击。

certificate-authority-data 中的值来自kube-ca的CA证书(非Rancher集群或使用授权集群端点的Rancher集群),或者是Rancher CA证书(任意Rancher集群)。

请务必在此字段中输入正确的值,否则kubectl不会验证与你的Kubernetes集群的连接。这就是为什么在设置Rancher时需要正确配置TLS。

TLS使用指南(一):如何在Rancher 2.x中进行TLS终止?

理解节点和集群Agent通信

在任意Rancher连接的集群(包括导入的或其他方式)中,需要部署两个工作负载:

1、 cattle-cluster-agent Deployment

2、 cattle-node-agent Deployment

每个工作负载执行一个特定的功能。总之,这两个agent连接到Rancher的API并在tcp/443上建立安全的websocket连接。然后,该websocket连接会用于Rancher与托管的节点或集群之间的双向通信。

集群agent连接到托管集群的Kubernetes API,这使Rancher可以通过websocket隧道执行API操作。当执行集群操作时(如升级、ectd快照等),节点agent将与RKE集群中的节点进行交互。

这两个agent都使用称为“ CA checksum ”的配置值,该配置值将作为环境变量以 CATTLE_CA_CHECKSUM 的形式传递给Pod。该值需要与kubectl相同——确保连接到正确的端点并方式MITM的发生。但是,校验和的工作原理略有不同。

cattle agent的CA checksum可以厌憎agent是否连接到Rancher API的正确实例。由于Rancher使用TLS保护其HTTPS API端点,因此agent容器可以使用此校验和来验证API端点提供的TLS证书是否正确。

其次, CATTLE_CA_CHECKSUM 未配置为CA证书的base64编码副本。相反,Rancher会生成CA证书的 sha256 校验和,该证书用于签署Rancher TLS证书,并将该值放入 CATTLE_CA_CHECKSUM 字段中。结果如下:

CATTLE_CA_CHECKSUM=b0af09b35ef086fcfc21e990fbd750720abe5c811dbea3ae40fe050a67f0bdb0e

当一个Rancher集群或节点agent调用Rancher API,它会将CA证书与其在Deployment和DaemonSet中配置的那一个进行比较。如果它们匹配,通信则会建立起来。

TLS使用指南(一):如何在Rancher 2.x中进行TLS终止?

安全传输层协议(TLS)终止

当安装Rancher时有以下4种主要方式来终止TLS:

  • 使用Rancher的自签名证书

  • 使用Let’s Encrypt

  • 自带证书

  • 外部TLS终止

每种方法都有特定的要求,需要在具体操作中进行权衡。

TLS使用指南(一):如何在Rancher 2.x中进行TLS终止?

使用Rancher的自签名证书

在终止TLS的四个选项中,这个可能是最简单的。在HA和单节点安装方案中,这也是Rancher的默认选项。也就是说,通过不将任何TLS特定的参数传递给 helm 安装或 docker run ,来进行安装。

安装后,Rancher会生成一个CA证书( CN=cattle-ca ),并且使用该证书为其自身证书签名。根据你执行的安装类型,自签名证书的工作方式会有所不同。

单节点安装

容器启动后,设置前,Rancher在443端口上响应任意HTTPS请求,无论其目标Host值如何。这是如何成为可能的呢?

在这一状态下,Rancher会为你到达的任何主机名自动生成一个证书。如果是一个IP(如10.11.12.13),那么Rancher会为该IP生成一个自签名(使用 cattle-ca )证书。如果是以一个主机名(如 my-rancher.example.org )到达此新的Rancher安装目录,同样也会以相同的方式生成一个自签名证书。

在Rancher使用单个证书之前,你需要完成设置步骤(设置管理员密码并确认Rancher主机名)。该证书对于在Rancher初始设置期间配置的主机名有效。

在HA安装场景下,自签名证书需要你安装一个名为cert-manager的应用程序。与单节点Rancher管理CA证书本身不同,HA rancher使用 cert-manager 来处理证书的生命周期。你可以根据以下指引将 cert-manager 安装到你准备好的Kubernetes集群中:

https://rancher.com/docs/rancher/v2.x/en/installation/k8s-install/helm-rancher/

一旦你完成 cert-manager 的安装,下一步是安装rancher。使用自签名证书是Rancher的默认设置,所以执行helm install时实际上只有一个强制性参数:

--set hostname=<YOUR.DNS.NAME>

该参数是强制性的,因为Rancher HA安装不具有与单节点安装相同的即时证书生成功能。因此,一旦你设置了主机名,该主机名将用于Rancher安装的整个生命周期。所以你必须确保你的设置是正确的。

然后 cert-manager 将会生成一个证书,该证书作为一个secret存储在 cattle-system 命名空间中,名为 tls-rancher-ingress

本文就到此结束啦,本系列的第二篇文章将会为大家介绍其他类型的TLS终止选项。

TLS使用指南(一):如何在Rancher 2.x中进行TLS终止?
TLS使用指南(一):如何在Rancher 2.x中进行TLS终止?

About Rancher Labs

Rancher Labs由CloudStack之父梁胜创建。旗舰产品Rancher是一个开源的企业级Kubernetes管理平台,实现了Kubernetes集群在混合云+本地数据中心的集中部署与管理。Rancher一向因操作体验的直观、极简备受用户青睐,被Forrester评为2018年全球容器管理平台领导厂商,被Gartner评为2017年全球最酷的云基础设施供应商。

目前Rancher在全球拥有超过一亿的下载量,并拥有包括中国人寿、华为、中国平安、兴业银行、民生银行、平安证券、海航科技、厦门航空、上汽集团、海尔、米其林、丰田、本田、中船重工、中联重科、迪斯尼、IBM、Cisco、Nvidia、辉瑞制药、西门子、CCTV、中国联通等全球著名企业在内的共40000家企业客户。

TLS使用指南(一):如何在Rancher 2.x中进行TLS终止?

点击阅读原文,报名k3s第一期在线培训

↓↓↓


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Google's PageRank and Beyond

Google's PageRank and Beyond

Amy N. Langville、Carl D. Meyer / Princeton University Press / 2006-7-23 / USD 57.50

Why doesn't your home page appear on the first page of search results, even when you query your own name? How do other web pages always appear at the top? What creates these powerful rankings? And how......一起来看看 《Google's PageRank and Beyond》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

MD5 加密
MD5 加密

MD5 加密工具