介绍
介绍
在上一节课里面福哥带着大家学会了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 |
IP | 192.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
server.csr
创建csr文件。
这个环节一上来就要你输入刚刚server.key的密码,没忘记吧?
然后还要填写域名的基本信息,包括国家、省份、地区、单位名称以及授权域名!
openssl req -new -key server.key -out server.csr -config /etc/pki/tls/openssl.cnf
上面的命令在输入基本信息的时候,一旦输入错了就得重来,非常恶心!解决办法可以使用“-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"
创建/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
至此SSL证书就做好了,它们是server.crt和server.key!
ls
server.key.unsecure
这个server.key是有密码的,使用的时候还需要输入密码,这非常不方便,怎么办?可以创建免密的密钥文件server.key.unsecure来解决!
openssl rsa -in server.key -out server.key.unsecure
完成后会生成这些文件,红框框起来的两个文件是我们后面会用到的!
ls
使用rzsz工具把它们下载下来备用!
sz server.crt sz server.key.unsecure
使用
默认SSL证书
打开浏览器访问网址https://tfphp-k8s.tongfu.net/,可以看到浏览器上会有“不安全”提示!
点击“与此站点的连接不安全”,然后点击右上角的证书小图标查看证书信息!
点击“证书无效”进去可以看到这是一张由k8s的负载均衡LB临时分配的SSL证书!
福哥这里是Edge浏览器查看SSL证书的方法,Chrome浏览器操作方法略有不同,大家可以自己摸索下!
配置SSL证书
点开菜单“资源”里面的“密文”菜单,进入密文管理界面。
点击“证书列表”按钮进入证书管理界面。
点击右上角的“添加证书”按钮添加证书。
名称“tfphp-k8s-tongfu-net”(名称不能包含“.”),作用域“单个命名空间”,命名空间“web”。
把server.key.unsecure上传到私钥里。
把server.crt上传到证书里,删除“-----BEGIN CERTIFICATE-----”前面的全部内容。
划到最下面点击“保存”按钮完成证书的添加。
开启HTTPS访问
切换到负载均衡理界面,点击tfphp的升级按钮。
下划到“SSL/TLS证书”这里,点击“添加证书”按钮。
点击“选择证书”,证书选择刚刚添加的“tfphp-k8s-tongfu-net”证书,SSL证书对应的域名“tfphp-k8s.tongfu.net”。
划到最下面点击“保存”按钮完成负载均衡tfphp的升级。
测试
在浏览器里刷新网址https://tfphp-k8s.tongfu.net/,重新查看SSL证书信息,可以看到现在的SSL证书是我们刚刚创建的了!
为什么这里还是提示“不安全”?因为我们部署的SSL证书是自己制作的,不是SSL证书颁发机构授权的。
如果想要去掉这个“不安全”的提示,需要去到正规的SSL证书颁发机构或者代理平台去申请!目前已知的可以申请到的合法的且免费的SSL证书的平台就是阿里云和腾讯云!
总结
今天福哥带着大家学习了使用SSL证书给Rancher(k8s)的负载均衡(LB)开启HTTPS安全方式访问的方法!
SSL证书分为单独域名证书和泛域名证书两种。理论上每一个域名都要有自己独立的SSL证书,即使是二级域名、三级域名也是如此,此类的域名如:tongfu.net、tfphp.tongfu.net等等。如果自己的域名扩展了很多子级域名的话,可以使用泛域名证书,一张泛域名证书可以为同域的所有子域名做HTTPS安全认证,此类的域名如:*.tongfu.net、*.space.tongfu.net等等。