前言
最近一直在研究关于如何给一个fabric的组织更换一个新的证书, 包括所有加入的通道, 所有peer和orderer.
用了很多看似完美的方法却多次测试失败, 最后总算找到一种方法.
{
"channel_group": {
"groups": {
"Application": {
"groups": {
"Org1MSP": {
"groups": { },
"mod_policy": "Admins",
"values": {
"MSP": {
}
},
"version": "0"
},
"Org2MSP": {
"groups": { },
"mod_policy": "Admins",
"values": {
"MSP": {
}
},
"version": "0"
}
},
"version": "1"
},
"Orderer": {
"groups": {
"OrdererOrg": {
"groups": { },
"values": {
"MSP": {
}
},
"version": "0"
}
},
"values": {
"ConsensusType": {
"mod_policy": "Admins",
"value": {
"metadata": {
"consenters": [
{
"client_tls_cert": "==",
"host": "orderer.example.com",
"port": 7050,
"server_tls_cert": "=="
}
],
"options": {
"election_tick": 10,
"heartbeat_tick": 1,
"max_inflight_blocks": 5,
"snapshot_interval_size": 16777216,
"tick_interval": "500ms"
}
},
"state": "STATE_NORMAL",
"type": "etcdraft"
},
"version": "0"
}
},
"version": "0"
}
},
"sequence": "2"
}
}
一个通道配置块类似上面这种,为了看的清楚有些内容我删了, 更换证书我们需要保证application及orderer的MSP是相同的, 否则更新配置块是不会成功的, 且我们得保证当前组织的raft节点的证书也要全部更换掉.