首先我们先创建一个多群组多机构节点网络或者或者其他类型的节点网络。
这里以多群组节点为例。
通过二进制fisco-bcso
文件,和配置config
文件,创建节点
127.0.0.1:2 agA 1,2,3 30300,20200,8545
127.0.0.1 agB 1 30400,20300,8555
127.0.0.1 agC 2 30500,20400,8565
执行: bash build_chain.sh -f config -e ~/fisco/fisco-bcos
-f :指定节点配置文件
-e:离线部署时 需要用来指定fisco-bcos 的二进制文件
创建完成后,先不要启动。如果你启动了,请删除节点下的data
和log
文件,再进行下一步。
删除之后的节点文件夹内应该是下图这样:
然后,我们启动key-manager
启动成功会提示
[TRACE][Load]key-manager started,port=8150
然后我们另开一个终端,当前终端不要关闭!
去到script
文件夹下:
执行: bash gen_data_secure_key.sh 127.0.0.1 8150 Xiao.
8150
:要与刚才启动key-manager的端口一致
Xiao.
:可以自定义 但要记住
执行成功后,提示:
CiherDataKey generated: 952dbcc240daedf23d226892ad656d52
Append these into config.ini to enable disk encryption:
[storage_security]
enable=true
key_center_url=127.0.0.1:8150
cipher_data_key=952dbcc240daedf23d226892ad656d52
cipher_data_key
要保存好,下面会用到。
接着,我们去修改节点的配置文件:需要加密哪个就修改哪个,如果要全部加密,那就修改全部。将需要加密的节点信息修改 这里修改的是node0
配置文件位置 node0/config.ini
如果我们要修改全部,就要将所有的节点都修改
node0,node1,node2,node3全部手动修改。
可以使用 sed -i
命令来批量修改提高效率。
我这里写了一个批量修改[storage_security]
的sh脚本,将他放在nodes
文件夹中,执行bash s_KeySed.sh 127.0.0.1 8150 952dbcc240daedf23d226892ad656d52
,就可以将所有的配置文件修改完成。
127.0.0.1:要与key-manager的ip一致,一般都是127.0.0.1
8150:要与key-manager的端口一致
952dbcc240daedf23d226892ad656d52:替换成刚刚生成的cipher_data_key
可以看到已经修改完成了
s_KeySed.sh
的源代码:
sleep 1
programName=${0##*/}
sedS(){
if [ -z "$3" -o -z "$2" -o -z "$1" ];then
#echo -e "\e[31m错误:错少参数,--help查看文档\e[0m"
echo -e "\e[32m[Tips:] bash $programName [ip] [port] [key] \e[0m"
exit
fi
findList=$(grep -rl "enable=" | grep -v $programName)
echo -e "\e[32m[将修改以下文件] \e[0m"
echo -e "\e[32m$findList \e[0m"
sleep 2
echo -e "\e[44m[Start] \e[0m"
sed -i "s/enable=false/enable=true/g" $findList
echo -e "\e[32m_enable=false_=>_enable=true \e[0m"
sleep 1
sed -i "s/key_manager_ip=/key_manager_ip=$1/g" $findList
echo -e "\e[32m_key_manager_ip=_=>_key_manager_ip=$1 \e[0m"
sleep 1
sed -i "s/key_manager_port=/key_manager_port=$2/g" $findList
echo -e "\e[32m_key_manager_port=_=>_key_manager_port=$2 \e[0m"
sleep 1
sed -i "s/cipher_data_key=/cipher_data_key=$3/g" $findList
echo -e "\e[32m_cipher_data_key=_=>_cipher_data_key=$3 \e[0m"
sleep 1
echo -e "\e[32m[操作成功] \e[0m"
}
help(){
echo -e "\e[32m--bash sed.sh [ip] [port] [key] \e[0m"
}
main(){
if [ "$1" == "--help" ];then
help
exit
fi
sedS "$1" "$2" "$3"
}
main "$1" "$2" "$3"
下载地址:文件下载-奶牛快传 Download |CowTransfer
修改完节点配置文件之后,我们返回到key-manager
的script
文件夹:
执行:bash encrypt_node_key.sh 127.0.0.1 8150 ~/fisco/nodes/127.0.0.1/node1/conf/node.key 952dbcc240daedf23d226892ad656d52
来加密节点私钥。
127.0.0.1 8150 //也key-manager配置一样
952dbcc240daedf23d226892ad656d52 //就是上文生成的cipher_data_key
将我们刚刚修改的配置的节点的私钥都加密一遍。
加密node0,node1,node2,node3节点私钥
bash encrypt_node_key.sh 127.0.0.1 8150 ~/fisco/nodes/127.0.0.1/node0/conf/node.key 952dbcc240daedf23d226892ad656d52
bash encrypt_node_key.sh 127.0.0.1 8150 ~/fisco/nodes/127.0.0.1/node1/conf/node.key 952dbcc240daedf23d226892ad656d52
bash encrypt_node_key.sh 127.0.0.1 8150 ~/fisco/nodes/127.0.0.1/node2/conf/node.key 952dbcc240daedf23d226892ad656d52
bash encrypt_node_key.sh 127.0.0.1 8150 ~/fisco/nodes/127.0.0.1/node3/conf/node.key 952dbcc240daedf23d226892ad656d52
加密成功,我们刚刚的key-manager
启动窗口会有提示:
好了,启动!节点:
key-manager终端:
启动成功。注意,加密之后每次启动节点之前需要先启动key-manager
不然会报错。