etcd入门系列四:开启客户端证书访问

etcd入门系列 一. etcd在docker中的安装与使用 二. etcd 开启 https 三. 身份验证访问控制 四. 开启客户端证书访问 1. 生成客户端证书 生成client.json: $ cfssl print-defaults csr > client.json 编辑 client.json 的修改 CN 值为 cliet ... "CN": "client", "hosts": [""], ... 生成客户端证书 cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=client client.json | cfssljson -bare client 将会得到如下文件 client-key.pem client.csr client.pem 2. 开启客户端证书检测 docker run -v /root/cfssl:/root/cfssl -p 2379:2379 --name etcd-net etcd /usr/local/bin/etcd -name etcd-net --client-cert-auth --trusted-ca-file=/root/cfssl/ca.pem --cert-file=/root/cfssl/server.pem --key-file=/root/cfssl/server-key.pem -advertise-client-urls https://0.0.0.0:2379 -listen-client-urls https://0.0.0.0:2379 --client-cert-auth:当这个选项被设置时,etcd 将为受信任CA签名的客户端证书检查所有的传入的 HTTPS 请求,不能提供有效客户端证书的请求将会失败。...

November 25, 2018 · 1 min · 云溪

etcd入门系列三:身份验证访问控制

etcd入门系列 一. etcd在docker中的安装与使用 二. etcd 开启 https 三. 身份验证访问控制 四. 开启客户端证书访问 1. 简介 etcd 默认是没有开启访问控制的,如果我们开启外网访问的话就需要考虑访问控制的问题,etcd 提供了两种访问控制的方式: 基于身份验证的访问控制 基于证书的访问控制 这节主要是选择第一种方式,进行的讲解,由于之前文章中是采用http接口的方式通讯,为了更全面的了解 etcd 的使用,本节使用官方提供的 etcdctl 工具进行与服务器之间的通讯。 2. root 用户 root 是 etcd 的超级管理员,拥有 etcd 的所有权限,在开启角色认证之前为们必须要先建立好 root 用户。还需要注意的是 root 用户必须拥有 root 的角色,允许在 etcd 的所有操作. 3. root 角色 root 角色可以赋予任何用户,拥有 root 角色的用户有全局读写权限和集群身份验证配置权限,此外,还具有修改集群成员身份,碎片整理,建立快照等权限。 4. 用户操作 查看用户列表: $ etcdctl --ca-file /root/cfssl/ca.pem --endpoints https://192.168.3.3:2379 user list 创建用户: $ etcdctl --ca-file /root/cfssl/ca.pem --endpoints https://192.168.3.3:2379 user add user1 用户可以被赋予角色,也可以被撤销角色: #赋予权限 $ etcdctl --ca-file /root/cfssl/ca....

November 24, 2018 · 3 min · 云溪

etcd入门系列二:etcd开启https

etcd入门系列 一. etcd在docker中的安装与使用 二. etcd 开启 https 三. 身份验证访问控制 四. 开启客户端证书访问 上节(etcd在docker中使用)etcd已经可以正常使用,这节讲讲如何开启htpps 1 生成签名 1.1 下载 cfssl mkdir ~/bin curl -s -L -o ~/bin/cfssl https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 curl -s -L -o ~/bin/cfssljson https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 chmod +x ~/bin/{cfssl,cfssljson} export PATH=$PATH:~/bin 需要注意的是,这里是以linux的64位为例,如果你是其他系统,请修改成对应系统的cfssl包 1.2 初始化证书 使用cfssl模板生成ca-config.json,ca-csr.json mkdir ~/cfssl cd ~/cfssl cfssl print-defaults config > ca-config.json cfssl print-defaults csr > ca-csr.json 1.3 证书介绍 客户端证书(client certificate):用于服务器对客户端进行身份验证.例如 etcdctl, etcd proxy, docker 等客户端. 服务器证书(server certificate):服务器端使用,用于客户端验证服务器身份.例如 docker 服务器, kube-apiserver 对等证书(peer certificate):用于etcd集群间的双向通讯 1....

November 21, 2018 · 3 min · 云溪

etcd入门系列一:etcd 在 docker 中使用

etcd入门系列 一. etcd在docker中的安装与使用 二. etcd 开启 https 三. 身份验证访问控制 四. 开启客户端证书访问 简介 etcd是CoreOS团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法,etcd基于Go语言实现。 etcd作为服务发现系统,有以下的特点 简单:安装配置简单,而且提供了HTTP API进行交互,使用也很简单 安全:支持SSL证书验证 快速:根据官方提供的benchmark数据,单实例支持每秒2k+读操作 可靠:采用raft算法,实现分布式系统数据的可用性和一致性 etcd项目地址:https://github.com/coreos/etcd/ 构建镜像 1.创建dockersfile$ sudo touch Dockerfile 2.$ sudo vim Dockerfile编辑Dockerfile文件,写入内容如下: FROM alpine:latest ADD etcd /usr/local/bin/ ADD etcdctl /usr/local/bin/ RUN mkdir -p /var/etcd/ RUN mkdir -p /var/lib/etcd/ # Alpine Linux doesn't use pam, which means that there is no /etc/nsswitch.conf, # but Golang relies on /etc/nsswitch.conf to check the order of DNS resolving # (see https://github....

November 19, 2018 · 2 min · 云溪