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

在上一篇文章里我们大致介绍了安装 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

二进制安装k8s集群(2)-制作ssl证书_第1张图片

修改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

二进制安装k8s集群(2)-制作ssl证书_第2张图片

二进制安装k8s集群(2)-制作ssl证书_第3张图片

制作ca根证书

生成ca key

openssl  genrsa -out ca.key 2048

二进制安装k8s集群(2)-制作ssl证书_第4张图片

生成ca csr证书请求文件

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

二进制安装k8s集群(2)-制作ssl证书_第5张图片

生成自签名ca证书

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

二进制安装k8s集群(2)-制作ssl证书_第6张图片

制作docker server证书

生成docker server key

openssl  genrsa -out docker-server.key  2048

二进制安装k8s集群(2)-制作ssl证书_第7张图片

生成docker server csr证书请求文件

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

二进制安装k8s集群(2)-制作ssl证书_第8张图片

查看docker server csr证书请求文件

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

二进制安装k8s集群(2)-制作ssl证书_第9张图片

添加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

二进制安装k8s集群(2)-制作ssl证书_第10张图片

二进制安装k8s集群(2)-制作ssl证书_第11张图片

二进制安装k8s集群(2)-制作ssl证书_第12张图片

生成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

二进制安装k8s集群(2)-制作ssl证书_第13张图片

查看docker server证书

二进制安装k8s集群(2)-制作ssl证书_第14张图片

制作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证书

二进制安装k8s集群(2)-制作ssl证书_第15张图片

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

你可能感兴趣的:(二进制安装k8s集群(2)-制作ssl证书)