12. 如何给快到期的证书续期

本章节将要说明如何给快到期的证书续期、更新链上信息,此处包括:节点证书、trustRoot证书、用户证书

tips: 操作前,最好先备份data和config目录

12.1. 证书替换流程

  1. 续期各个证书:ca、 node、admin、client证书

  2. 校验生成的证书正确性

  3. 停止当前链

  4. 备份data config

  5. 替换node、admin、client证书

  6. ——————

  7. 启动链

  8. 发交易删除过期组织1的共识节点ID

  9. 发交易删除过期组织1的共识节点

  10. 发交易删除过期组织1的trustRoot(ca)

  11. 发交易添加续期组织1的trustRoot(ca)

  12. 发交易添加续期组织1的共识节点

  13. 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