使用OpenSSL生成Kubernetes证书

kubernetes支持Base认证/Token认证/CA认证三种,这篇文章用于记录一下CA认证所需要的最简单程度的命令。

kubernetes构成

机器名 职能
host121 Kubernetes Master
host122 Kubernetes Minion
host123 Kubernetes Minion
host124 Kubernetes Minion

测试版本为1.10,但不限于此版本,为openssl证书较为通用的方式。

所需证书

所需要的证书相关文件的说明如下:

证书类型 文件名称
CA证书私钥 ca.key
CA证书 ca.crt
XXX用证书私钥 server.key
XXX用证书签名请求文件 server.csr
XXX用证书 server.crt

CA证书

CA证书私钥

证书类型 文件名称
CA证书私钥 ca.key

命令:openssl genrsa -out ca.key 2048

[root@host121 k8scert]# openssl genrsa -out ca.key 2048
Generating RSA private key, 2048 bit long modulus
........................................................+++
..................+++
e is 65537 (0x10001)
[root@host121 k8scert]#

CA证书

证书类型 文件名称
CA证书 ca.crt

命令:openssl genrsa -out ca.key 2048

[root@host121 k8scert]# openssl req -x509 -new -nodes -key ca.key -subj "/CN=host121" -days 5000 -out ca.crt
[root@host121 k8scert]# ls
archive  ca.crt  ca.key
[root@host121 k8scert]#

XXX用证书

apiserver/ControllerManager/kublet等所需证书可用如下方式创建

证书私钥

证书类型 文件名称
XXX用证书私钥 server.key

命令:openssl genrsa -out server.key 2048

[root@host121 k8scert]# openssl genrsa -out server.key 2048
Generating RSA private key, 2048 bit long modulus
..............................+++
........................................................................+++
e is 65537 (0x10001)
[root@host121 k8scert]#

证书签名请求文件

证书类型 文件名称
XXX用证书签名请求文件 server.csr

命令:openssl req -new -key server.key -subj “/CN=host121” -out server.csr

[root@host121 k8scert]# openssl req -new -key server.key -subj "/CN=host121" -out server.csr
[root@host121 k8scert]#

subj中设定的subject的信息为用户自己的数据,一般将CN设定为域名/机器名/或者IP名称,比如kubelet为所在node的IP即可

证书

证书类型 文件名称
XXX用证书 server.crt

命令:openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 5000

[root@host121 k8scert]# openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 5000
Signature ok
subject=/CN=host121
Getting CA Private Key
[root@host121 k8scert]#

猜你喜欢

转载自blog.csdn.net/liumiaocn/article/details/79835633