cfssl

下载安装cfssl 和cfssjson

curl -s -L -o /usr/bin/cfssl https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
curl -s -L -o /usr/bin/cfssljson https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
chmod +x /usr/bin/{cfssl,cfssljson}

生成证书

mkdir ~/cfssl
cd ~/cfssl

生成CA配置文件

cfssl print-defaults config > ca-config.json
cfssl print-defaults csr > ca-csr.json

ca-config.json内容修成如下

{
	"signing": {
		"default": {
			"expiry": "87600h"
		},
		"profiles": {
			"server": { # 服务器证书由服务器使用,并由客户端验证服务器身份。例如docker服务器或kube-apiserver
				"expiry": "87600h",
				"usages": [
					"signing",
					"key encipherment",
					"server auth"
				]
			},
			"client": { # 客户端证书用于按服务器对客户端进行身份验证。例如etcdctl,etcd proxy或者docker客户端。
				"expiry": "87600h",
				"usages": [
					"signing",
					"key encipherment",
					"client auth"
				]
			},
			"peer": { # 对等证书由etcd集群成员使用,因为它们以两种方式相互通信。
				"expiry": "87600h",
				"usages": [
					"signing",
					"key encipherment",
					"server auth",
					"client auth"
				]
			}
		}
	}
}

修改ca-csr.json内容为如下

生成CA证书

会得到以下文件:

生成服务器证书

服务器证书的最重要值是公用名(CN)和主机。我们必须替换它们,内容如下:

server.json内容

开始生成服务器证书,etcd 集群不需要该证书,可以跳过这一段

或者没有 csr.json文件执行如下命令:

生成对等证书

etcd tls就是用这个证书

peer.json内容如下:

执行生成命令

或者没有 csr.json文件执行如下命令:

生成客户端证书,etcd tls环境暂时也用不到这个

对于客户端证书,我们可以忽略主机值并仅将公共名称(CN)设置为客户端值:

client.json内容

执行生成命令

或者没有 csr.json文件执行如下命令:

最后更新于