1. 程式人生 > >etcd入門系列四:開啟客戶端證書訪問

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 請求,不能提供有效客戶端證書的請求將會失敗。
--trusted-ca-file=<path>: 受信任的認證機構

3. 驗證配置

輸入命令:

etcdctl --ca-file /root/cfssl/ca.pem --endpoints https://192.168.3.3:2379 set foo 1

返回結果:

routines:SSL3_READ_BYTES:sslv3 alert bad certificate
接下來,帶著之前生成的證書嘗試重新發送請求

etcdctl --ca-file /root/cfssl/ca.pem --cert-file /root/cfssl/client.pem --key-file /root/cfssl/client-key.pem --endpoints https://192.168.3.3:2379 set foo 1

//返回值:1

帶上證書後訪問可以如預期中進行,到此有關 etcd 的 安裝,角色許可權控制,客戶端證書與服務端通訊已經完成,如果大家在使用過程中有什麼問題,歡迎交流。

原文連線: http://www.artacode.com/posts/etcd/certificates/