网站首页 文章专栏 03准备证书.md
03准备证书.md
创建于:2021-07-04 07:49:09 更新于:2024-05-03 15:20:45 羽瀚尘 362

为了集群节点之间通信的安全性,为api server增加https,这需要我们生成https证书。

https证书可以是公共ca也可是自签ca,在这里为了方便,使用自签ca。

如果是首次安装k8s,/etc/kubernetes/pki/目录不存在,那么可以由kubeadm完成证书的生成. 本例中该目录存在,且已经有ca

准备ca与待签名证书

# 生成顶级CA的公钥证书和私钥文件,有效期10年(RSA 1024bits,默认)
openssl req -new -x509 -days 3650 -keyout ca.key -out ca.crt
# 为顶级CA的私钥文件去除保护口令
openssl rsa -in ca.key -out ca.key
# 为应用证书/中级证书生成私钥文件
openssl genrsa -out apiserver.key
# 根据私钥文件,为应用证书/中级证书生成 csr 文件(证书请求文件)
openssl req -new -key apiserver.key -out apiserver.csr

为openssl签证书准备环境

这一步是workaround,并非标准步骤。但是不这样做会出错。

# 生成必要的文件,否则会报错 Using configuration from /usr/share/ssl/openssl.cfg I am unable to access the ./demoCA/newcerts directory ./demoCA/newcerts: No such file or directory 
mkdir demoCA
mkdir demoCA/newcerts
touch demoCA/index.txt
touch demoCA/serial
echo 01 > demoCA/serial

/etc/ssl/openssl.cnf[v3_ca]部分添加subjectAltName = IP:192.168.25.180, 这是你master节点的地址。

使用自有ca签发证书

# 使用CA的公私钥文件给 csr 文件签名,生成应用证书,有效期10年  
openssl ca -in apiserver.csr -out apiserver.crt -cert ca.crt -keyfile ca.key -days 3650 -policy policy_anything

将上面生成的文件复制到/etc/kubernetes/pki/路径下。

参考:

TODO:

  • 使用easyrsa生成证书
  • 使用certbot生成公有ca证书并在内网使用