生成證書請參考 自簽名證書生成
證書有效期建議
這里建議給etcd證書有效期規(guī)劃如下:
- CA的有效期:100年(長期有效)
- etcd集群證書:100年(長期有效,更新集群證書會導(dǎo)致集群不可用惭聂,對業(yè)務(wù)有損不建議耙厚,且證書可以限制能加入集群的地址,相對較安全)
- 客戶端證書有效期:1年,可以每年更換一次友多,防止證書發(fā)生泄露攀隔,導(dǎo)致數(shù)據(jù)異常;各自服務(wù)只需做重啟即可决采,不影響業(yè)務(wù)連續(xù)性
場景1: CA證書過期
如果CA過期自沧,那就需要對整個集群相關(guān)的證書都做更新,如CA树瞭、server拇厢、client等都要重新生成。
思路1:無損晒喷,推薦
-
搭建新集群孝偎,將數(shù)據(jù)同步過來
-
按需更新服務(wù)證書及etcd集群
思路2:有損,不建議
- 原地更新證書凉敲,替換過程中集群不可用衣盾,且
- 相關(guān)服務(wù)更新證書,并重啟爷抓,未替換前服務(wù)調(diào)用etcd失敗
思路1 的實施步驟
- 部署帶有新證書的集群势决,并做數(shù)據(jù)同步(數(shù)據(jù)同步用自帶的make-mirror就可以,整體性能沒有問題蓝撇,支持全量和按prefix同步 https://github.com/etcd-io/etcd/blob/main/etcdctl/doc/mirror_maker.md
) - 更新相關(guān)服務(wù)的客戶端證書
- 證書備份
- 替換證書
- 修改服務(wù)的etcd集群和證書信息果复,重啟服務(wù)即可
- 異常回退:把2的備份回退一下就行
場景2: CA證書正常唉地,客戶端證書過期
這種場景相對簡單据悔,只要重新生成客戶端證書,然后更新client的配置即可耘沼,也不需要新建集群和數(shù)據(jù)同步
實施步驟
- 生成新client證書
$ ls ca-cert/
ca-config.json ca.csr ca-csr.json ca-key.pem ca.pem
#修改ca-config.json中client過期時間為1年极颓,正常配置就是1年,不用需改
$ cat ca-config.json
"client": {
"expiry": "8760h",
"usages": [
"signing",
"key encipherment",
"client auth"
]
},
#生成新的client證書
$ cfssl gencert -ca=../ca-cert/ca.pem -ca-key=../ca-cert/ca-key.pem -config=ca-config.json -profile=client client.json | cfssljson -bare client24
$ ls 24ssl/
client24.csr client24-key.pem client24.pem client.json
- 驗證證書的有效性
將新client證書傳到一臺主機上群嗤,進(jìn)行有效性測試
1. 連通性
etcdctl --cacert=/etc/etcd/ssl24/ca.pem --cert=/etc/etcd/ssl24/client24.pem --key=/etc/etcd/ssl24/client24-key.pem --endpoints="https://1.1.1.1:2379" endpoint status
https://1.1.1.12379, 9393dd127a4e43b5, 3.3.11, 265 MB, false, false, 29876, 12341, 0,
2. 數(shù)據(jù)可操作
etcdctl --cacert=/etc/etcd/ssl24/ca.pem --cert=/etc/etcd/ssl24/client24.pem --key=/etc/etcd/ssl24/client24-key.pem --endpoints="https:/1.1.1.1:2379" put a123 11
OK
etcdctl --cacert=/etc/etcd/ssl24/ca.pem --cert=/etc/etcd/ssl24/client24.pem --key=/etc/etcd/ssl24/client24-key.pem --endpoints="https://1.1.1.1:2379" get a123
a123
11
其他步驟就不用說了菠隆,和CA更新跟換的第2步一樣。