如何用cfsslK8s Ingress配置以支持HTTPS访问?

摘要:Kubernetes集群中配置Ingress支持HTTPS访问(一):cfssl ,Kubernetes,docker ,HTTPS,Ingress,对称加密,非对称加密,中间人攻击,CA,NodePort,LoadBalancer
目录一.系统环境二.前言三.对称加密和非对称加密简介四.什么是HTTPS五.Ingress简介六.配置ingress对外发布服务6.1 安装NGINX ingress controller控制器6.2 创建pod6.3 为pod创建svc服务6.4 使用ingress发布服务6.5 访问服务6.5.1 使用Linux客户端来访问服务6.5.2 使用Windows客户端访问服务七.配置Ingress支持HTTPS访问7.1 使用ingress-nginx-controller自带的证书7.2 使用cfssl工具生成证书7.2.1 安装cfssl7.2.2 生成CA7.2.3 生成用户证书7.2.4 使用自定义的证书八.总结 一.系统环境 本文主要基于Kubernetes1.22.2和Linux操作系统Ubuntu 18.04。 服务器版本 docker软件版本 Kubernetes(k8s)集群版本 kube-bench版本 CPU架构 Ubuntu 18.04.5 LTS Docker version 20.10.14 v1.22.2 0.6.7 x86_64 Kubernetes集群架构:k8scludes1作为master节点,k8scludes2,k8scludes3作为worker节点。 服务器 操作系统版本 CPU架构 进程 功能描述 k8scludes1/192.168.110.128 Ubuntu 18.04.5 LTS x86_64 docker,kube-apiserver,etcd,kube-scheduler,kube-controller-manager,kubelet,kube-proxy,coredns,calico k8s master节点 k8scludes2/192.168.110.129 Ubuntu 18.04.5 LTS x86_64 docker,kubelet,kube-proxy,calico k8s worker节点 k8scludes3/192.168.110.130 Ubuntu 18.04.5 LTS x86_64 docker,kubelet,kube-proxy,calico k8s worker节点 二.前言 HTTPS是安全的HTTP协议,它通过SSL/TLS协议为客户端与服务器之间的通信提供加密。在Kubernetes集群中,Ingress资源管理集群外的访问,通过配置Ingress,我们可以为服务提供安全的HTTPS访问。 在Kubernetes集群中配置Ingress以支持HTTPS访问的前提是已经有一套可以正常运行的Kubernetes集群,关于Kubernetes(k8s)集群的安装部署,可以查看博客《Ubuntu 安装部署Kubernetes(k8s)集群》https://www.cnblogs.com/renshengdezheli/p/17632858.html。 三.对称加密和非对称加密简介 数据加密的类型有: 对称加密:使用相同的密钥进行加密和解密。优点是算法公开、计算量小、加密速度快、加密效率高,但密钥分发是一个挑战,如果密钥在协商过程中被泄露,那么密文就可能被破解。常见的对称加密算法有des,aes,des256,des512等 非对称加密:使用一对密钥,一个用于加密(公钥(可公开)),另一个用于解密(私钥(私有的))。优点是安全性高,即使密文被拦截、公钥被获取,由于无法获取到私钥,攻击者也无法破译密文。常见的非对称加密算法有RSA、DSA、ECC等。但是非对称加密的计算过程复杂,加解密效率相对较低,举个例子:A给B传输文件,A先使用B的公钥加密,然后把加密文件发送给B,B使用自己的私钥进行解密。 哈希函数:输入不定长的值,总能得到一个定长的值。 另外非对称加密除了可以用来做数据加密(公钥加密,私钥解密),还可以用来做数字签名(私钥加密,公钥解密),数字签名用来验证身份,举个例子:A要给B发送一个数据,A需要向B证明这数据就是A发送的,不是别人发送的。A对需要传输的文件生成一个哈希值,文件内容不发生变化,哈希值就不会发生变化,A使用私钥加密哈希值,然后把数据和加密后的哈希值发送给B, B使用A的公钥解密哈希值,B将收到的数据生成一个哈希值,如果文件在传输的过程中没有被修改,则两个哈希值应该是一样的 ,这样就可以验证数据是不是A发送的,以及数据有没有被修改过。
阅读全文