Rancher(k8s)使用SSL证书配置负载均衡LB的HTTPS安全方式访问

发表于 2023-05-29 01:36:26
阅读 363

介绍

介绍

在上一节课里面福哥带着大家学会了k8s的配置映射Config的使用方法,今天我们要讲讲如何使用SSL证书为k8s的负载均衡LB开启HTTPS的支持!

大家都知道现在主流的浏览器Chrome、Edge都是要求网站使用HTTPS安全方式访问的。如果网站不支持HTTPS安全方式访问,浏览器就会在地址栏左侧用特别显眼的样式显示“不安全”的提示。而且就算使用了HTTPS安全方式访问,如果SSL证书是不合法的或者是过期的,浏览器还是会在地址栏左侧显示“不安全”的提示!

今天福哥就教给大家如何给k8s的负载均衡LB开启HTTPS安全方式访问,把浏览器网站的“不安全”提示去掉~

环境

镜像版本
rancher/rancher:v2.5.17-rc4
操作系统CentOS 7 x86_64 2009
服务器TFCentOS7x64、TFCentOS7x64Node1
IP192.168.168.68、192.168.168.69
端口9443

安装

安装szrz工具

szrz是一款可以在SSH终端通过命令行方式实现本地电脑与远程服务器之间的文件上传下载的工具,我们可以使用这个工具把制作好的SSL证书文件从TFCentOS7x64上面下载下来。

当然,如果你的电脑上面有SFTP工具的话,用SFTP工具下载SSL证书也是可以的。

yum -y install lrzsz

自制SSL证书

server.key

创建密钥文件server.key文件。

这个环节会要求输入密码,可以输入一个简单的~

openssl genrsa -des3 -out server.key 1024

ec532c63511414e85b6d95a5dbbb160f.png

server.csr

创建csr文件。

这个环节一上来就要你输入刚刚server.key的密码,没忘记吧?

然后还要填写域名的基本信息,包括国家、省份、地区、单位名称以及授权域名!

openssl req -new -key server.key -out server.csr -config /etc/pki/tls/openssl.cnf

6c700dd440b28fce35d1293576863905.png

上面的命令在输入基本信息的时候,一旦输入错了就得重来,非常恶心!解决办法可以使用“-subj”参数提供各种基本信息!命令如下!

openssl req -new -key server.key -out server.csr -config /etc/pki/tls/openssl.cnf \
-subj "/C=CN/ST=Beijing/L=Dongcheng district/O=tongfu.net/OU=tongfu.net/CN=tfphp-k8s.tongfu.net"

ca.crt & ca.key

创建ca.crt文件和ca.key文件。

这个环节一上来就要输入一个密码,福哥建议输入一个简单的~

这个环节也要填写域名的基本信息,必填项和上一步一样!同样可以使用“-subj”参数输入避免出错重来!

openssl req -new -x509 -keyout ca.key -out ca.crt -config /etc/pki/tls/openssl.cnf \
-subj "/C=CN/ST=Beijing/L=Dongcheng district/O=tongfu.net/OU=tongfu.net/CN=tfphp-k8s.tongfu.net"

f1f8a9d7bc42f06779bb247e1c390115.png

创建/etc/pki/CA/index.txt(如果存在就不用了)

[ ! -f /etc/pki/CA/index.txt ] && touch /etc/pki/CA/index.txt

创建/etc/pki/CA/serial(如果存在就不用了)

[ ! -f /etc/pki/CA/serial ] && echo "00" > /etc/pki/CA/serial

server.crt

创建证书文件server.crt!

这一环节一上来就要让你输入刚刚的ca.key的密码,还记得吧?

后面有两个确认,输入“y”回车即可!

openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config /etc/pki/tls/openssl.cnf

d1ab6e2b927a443fbbde18d86985a640.png

至此SSL证书就做好了,它们是server.crt和server.key!

ls

6e39beff54e025ee3ba6efeb373390e3.png

server.key.unsecure

这个server.key是有密码的,使用的时候还需要输入密码,这非常不方便,怎么办?可以创建免密的密钥文件server.key.unsecure来解决!

openssl rsa -in server.key -out server.key.unsecure

58f34974ba84a64f0fe22a20558e3c46.png

完成后会生成这些文件,红框框起来的两个文件是我们后面会用到的!

ls

568e7734970515e97921591854b93fa8.png

使用rzsz工具把它们下载下来备用!

sz server.crt
sz server.key.unsecure

298947749833a39d99f18c50816594b9.png

使用

默认SSL证书

打开浏览器访问网址https://tfphp-k8s.tongfu.net/,可以看到浏览器上会有“不安全”提示!

4349365611d9f8363daea0dd033bbd22.png

点击“与此站点的连接不安全”,然后点击右上角的证书小图标查看证书信息!

8ca5f7571d0a235e45475ea914745a5b.png

点击“证书无效”进去可以看到这是一张由k8s的负载均衡LB临时分配的SSL证书!

06a2eb5719636171f1da9446ee4c3bde.png

福哥这里是Edge浏览器查看SSL证书的方法,Chrome浏览器操作方法略有不同,大家可以自己摸索下!

配置SSL证书

点开菜单“资源”里面的“密文”菜单,进入密文管理界面。

c4ce6a267dd32eefee1213b5ed5ac4ff.png

点击“证书列表”按钮进入证书管理界面。

091b298c59aac709c5e0fe6ac87fb183.png点击右上角的“添加证书”按钮添加证书。

c3bd7b4004a0e6600bb5f6f783d0fb66.png名称“tfphp-k8s-tongfu-net”(名称不能包含“.”),作用域“单个命名空间”,命名空间“web”。

89bd616a2cc874cafdfab7348b1c96e9.png

把server.key.unsecure上传到私钥里。

把server.crt上传到证书里,删除“-----BEGIN CERTIFICATE-----”前面的全部内容。

1da2f59e0b018afd4c87f3050f41845b.png

划到最下面点击“保存”按钮完成证书的添加。

e7d46e0523192ff7068e0a91350b5d37.png

开启HTTPS访问

切换到负载均衡理界面,点击tfphp的升级按钮。

6341290c77dc2f1550cb27ad96d02d61.png下划到“SSL/TLS证书”这里,点击“添加证书”按钮。

3a5f5a7f7aec6d1d58e23f6cdb433aab.png

点击“选择证书”,证书选择刚刚添加的“tfphp-k8s-tongfu-net”证书,SSL证书对应的域名“tfphp-k8s.tongfu.net”。

773f04e3c5f3b85e264d2a0699102dc3.png

划到最下面点击“保存”按钮完成负载均衡tfphp的升级。

测试

在浏览器里刷新网址https://tfphp-k8s.tongfu.net/,重新查看SSL证书信息,可以看到现在的SSL证书是我们刚刚创建的了!

784d0e2d660d1108607774df9f411fc7.png

为什么这里还是提示“不安全”?因为我们部署的SSL证书是自己制作的,不是SSL证书颁发机构授权的。

如果想要去掉这个“不安全”的提示,需要去到正规的SSL证书颁发机构或者代理平台去申请!目前已知的可以申请到的合法的且免费的SSL证书的平台就是阿里云和腾讯云!

总结

今天福哥带着大家学习了使用SSL证书给Rancher(k8s)的负载均衡(LB)开启HTTPS安全方式访问的方法!

SSL证书分为单独域名证书泛域名证书两种。理论上每一个域名都要有自己独立的SSL证书,即使是二级域名、三级域名也是如此,此类的域名如:tongfu.net、tfphp.tongfu.net等等。如果自己的域名扩展了很多子级域名的话,可以使用泛域名证书,一张泛域名证书可以为同域的所有子域名做HTTPS安全认证,此类的域名如:*.tongfu.net、*.space.tongfu.net等等。