首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >二进制安装k8s集群(2)-制作ssl证书

二进制安装k8s集群(2)-制作ssl证书

作者头像
TA码字
发布2020-04-01 17:35:10
9130
发布2020-04-01 17:35:10
举报
文章被收录于专栏:TA码字TA码字TA码字

上一篇文章里我们大致介绍了安装 k8s集群需要安装哪些组件以及我们的环境,在这篇文章里我们主要介绍制作ssl证书,我们以制作docker server和docker client证书为例。后面集群安装还需要很多证书,例如etcd,kube-apiserver,kubelet,harbor,kube-dashboard,nginx-ingress,tiller等等,都可以以这里作为参考。另外再额外说一下,我们后面安装docker开启了docker的tcp访问,也就是说可以远程连接操作docker,并且开启双向ssl client auth,所以在这里制作docker的server和client证书。默认docker client和docker server是通过unix sock通讯的(在同一台机器),在实际环境中要根据自己需要来决定是否开启tcp通讯。

我们这里用openssl制作证书,在制作之前先修改配置文件(通过subjectAltName机制),可以让我们的证书支持多个cn或者ip,这样证书放在不同的server上就比较方便了。为什么要这样呢,因为对于ssl的证书问题,client无非做这么两件事情。一是trust server发过来的证书,这个可以通过把server的证书或者签发server证书的根证书import到client的环境里解决。二是verify server证书,这个verify就是验证证书里的cn和client请求里的fqdn或者ip是否一致。我们这里配置证书可以支持多个cn和ip,那么证书就可以放到不同的server上了。(之前遇到有用java的同学只要遇到ssl问题就customize sslsocketfactory,然后trust任何证书,always verify pass,这个虽然管用,但是却有些暴力)

修改openssl配置文件支持证书多cn/ip

查找openssl配置文件并copy到证书制作目录

locate openssl.cnf
cp /etc/pki/tls/openssl.cnf /opt/sw/cert/mydockerserveropenssl.conf

修改openssl配置文件支持多cn/ip

vi mydockerserveropenssl.conf

[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req

[v3_req]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = *.rodney.com
IP.1 = 172.20.11.41
IP.2 = 172.20.11.42
IP.3 = 172.20.11.43
IP.4 = 172.20.11.44
IP.5 = 172.20.11.45
IP.6 = 172.20.11.46
IP.7 = 172.20.11.47
IP.8 = 172.20.11.48
IP.9 = 172.20.11.49
IP.10 = 172.20.11.50
IP.11 = 10.254.0.1
IP.12 = 10.254.0.2

制作ca根证书

生成ca key

openssl  genrsa -out ca.key 2048

生成ca csr证书请求文件

openssl req -new -key ca.key -out ca.csr

生成自签名ca证书

openssl  x509 -req -in ca.csr -out ca.crt -signkey ca.key -days 3650

制作docker server证书

生成docker server key

openssl  genrsa -out docker-server.key  2048

生成docker server csr证书请求文件

openssl  req -new -key docker-server.key -out docker-server.csr -config mydockerserveropenssl.conf

查看docker server csr证书请求文件

openssl req -text -noout -in docker-server.csr

添加index和series文件,创建series

openssl ca -in docker-server.csr -out docker-server.crt -cert ca.crt -keyfile ca.key -extensions v3_req -days 3650 -config mydockerserveropenssl.conf
touch /etc/pki/CA/index.txt
touch /etc/pki/CA/serial
echo 00 > /etc/pki/CA/serial

生成docker server证书并用ca证书签名

openssl ca -in docker-server.csr -out docker-server.crt -cert ca.crt -keyfile ca.key -extensions v3_req -days 3650 -config mydockerserveropenssl.conf

查看docker server证书

制作docker client证书

这里对于client的证书可以完全参考制作server端的证书,生成docker client key, client csr, client crt文件

1. openssl  genrsa -out docker-client.key  2048
2. openssl  req -new -key docker-client.key  -out docker-client.csr -config ./mydockerclientopenssl.conf
4. openssl ca -in docker-client.csr -out docker-client.crt -cert ca.crt -keyfile ca.key -extensions v3_req -days 3650 -config mydockerclientopenssl.conf

查看docker client证书

目前先写到这里,在下一篇文章里我们开始介绍安装docker。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 TA码字 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档