12. 如何给快到期的证书续期
本章节将要说明如何给快到期的证书续期、更新链上信息,此处包括:节点证书、trustRoot证书、用户证书
tips: 操作前,最好先备份data和config目录
12.1. 证书替换流程
续期各个证书:ca、 node、admin、client证书
校验生成的证书正确性
停止当前链
备份data config
替换node、admin、client证书
——————
启动链
发交易删除过期组织1的共识节点ID
发交易删除过期组织1的共识节点
发交易删除过期组织1的trustRoot(ca)
发交易添加续期组织1的trustRoot(ca)
发交易添加续期组织1的共识节点
8-12循环执行直到替换掉所有的组织
12.1.1. 用户证书
普通用户证书无需特殊操作。直接使用新续期的证书发交易即可。
若使用证书别名上链,需要先执行别名更新或者别名删除后重新别名上链。参考:长安链CMC命令行工具的:证书别名章节
tips: 新旧证书的地址是一样的,可通过cmc命令验证:
./cmc address cert-to-addr /client.sign.crt
12.1.2. 节点证书
因证书续期node id、key不会更改,故只需要将chainmaker.yml
中的node.cert_file, net.tls.cert_file, rpc.tls.cert_file3个证书文件替换。然后重启该节点即可。
同步节点、共识节点均一样的操作。
tips: 新旧节点证书nodeid查看方式: ./cmc cert nid –node-cert-path xxx.tls.crt
注意:nodeid指的是tls证书: xxx.tls.crt
12.1.3. trustRoot ca证书
直接使用旧的管理员签名,发送根证书更新交易即可更新,需要一个组织一个组织更新。也可以将组织的CA删除掉再重新添加。
如果当前链上仅有一个组织,也是使用旧的管理员签名即可更新。不可删除再新增。
参考:证书根证书更新
12.2. 证书续期的方式
12.2.1. 通过openssl续期
cat renew.sh
#!/bin/bash
inkey=$1
incrt=$2
cakey=$3
cacrt=$4
# 根据证书和key计算csr
echo "[get csr]"
openssl x509 -x509toreq -sha256 -in $incrt -out tmp.csr -signkey $inkey
# 根据csr使用ca key重新签发新证书
echo
echo "[renew]"
openssl x509 -req -sha256 -days 365 -in tmp.csr -out new$incrt -CAkey $cakey -CA $cacrt -CAcreateserial
# 校验新证书
echo
echo "[verify]"
openssl verify -CAfile $cacrt new$incrt
使用方式如下: 新证书文件名为: “new” + crtName
# 节点证书
./renew.sh common1.tls.key common1.tls.crt ../ca/ca.key ../ca/ca.crt
# 用户证书
./renew.sh client1.tls.key client1.tls.crt ca.key ca.crt
# trustRoot ca证书
./renew.sh ca.key ca.crt ca.key ca.crt
# 注意最后一步校验需要换成使用新CA证书,校验旧节点/用户证书
openssl verify -CAfile ca.new.crt common1.sign.new.crt
12.2.2. 通过CA-service续期
直接调用延期证书接口即可。/api/ca/renewcert
参考:ca-service