201 创建跟证书和秘钥

00.安装CFSSL

cfssl和 cfssljson 命令行工具用于提供 PKI Infrastructure 基础设施与生成 TLS 证书。

Linux

# 或许你需要先执行 `yum install -y wget` 以安装 wget
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
chmod +x cfssl_linux-amd64 cfssljson_linux-amd64
sudo mv cfssl_linux-amd64 /usr/local/bin/cfssl
sudo mv cfssljson_linux-amd64 /usr/local/bin/cfssljson

验证

验证 cfssl 的版本为 1.2.0 或是更高

$ cfssl version
Version: 1.2.0
Revision: dev
Runtime: go1.6

注意:cfssljson 命令行工具没有提供查询版本的方法。

01.配置CA并创建TLS证书

我们将使用 CloudFlare's PKI 工具 cfssl 来配置 PKI Infrastructure,然后使用它去创建 Certificate Authority(CA),并为 etcd、kube-apiserver、kubelet 以及 kube-proxy 创建 TLS 证书。

CA 证书是集群所有节点共享的,只需要创建一个 CA 证书,后续创建的所有证书都由它签名。

新建 CA 配置文件

字段说明

  • ca-config.json:可以定义多个 profiles,分别指定不同的过期时间、使用场景等参数;后续在签名证书时使用某个 profile;

  • signing:表示该证书可用于签名其它证书;生成的 ca.pem 证书中 CA=TRUE

  • server auth:表示client可以用该 CA 对server提供的证书进行验证;

  • client auth:表示server可以用该CA对client提供的证书进行验证;

创建 CA 证书签名请求

创建 ca-csr.json 文件,内容如下:

  • CNCommon Name,kube-apiserver 从证书中提取该字段作为请求的用户名 (User Name);浏览器使用该字段验证网站是否合法;

  • OOrganization,kube-apiserver 从证书中提取该字段作为请求用户所属的组 (Group);

  • C: 国家

  • ST: 省份

  • L: 城市

  • OU: 部门或单位名称

生成 CA 凭证和私钥

结果将生成以下两个文件:

最后更新于

这有帮助吗?