落盘加密是对节点存储在硬盘上的内容进行加密,加密的内容包括:合约的数据、节点的私钥。具体的落盘加密介绍,可参考:落盘加密的介绍,今天我们来部署并对节点进行落盘加密。
环境:ubuntu 22、搭建单机四节点(节点未启动!)
目录
【FISCO BCOS】二十一、使用Key Manager加密区块链节点
部署
每一个区块链节点的机构对应一个Key Manager,因此我们先部署一个,具体的部署文档可参考Key Manager Github README或Key Manager Gitee README
首先安装依赖
apt install git make cmake libprocps-dev curl libcurl4-openssl-dev
拉取项目
git clone https://github.com/FISCO-BCOS/key-manager.git
拉取如果出现问题,可以切换网络或者去掉https的s后再试一下
创建build文件
cd key-manager && mkdir build && cd build
在build目录下执行
cmake ..
再执行
make
如图,make编译成功
启动
启动Key Manager
./key-manager 8150 123xyz
配置dataKey
cd key-manager/scripts
bash gen_data_secure_key.sh 127.0.0.1 8150 123456
如此,我们就得到了节点的cipher_data_key=ed157f4588b86d61a2e1745efe71e6ea,将此配置写入节点的配置文件中,我们节点(node0)的配置文件位置在~/fisco/nodes/127.0.0.1/node0/config.ini,在storage_security处进行配置
加密节点私钥
执行脚本,加密节点私钥
cd key-manager/scripts
bash encrypt_node_key.sh 127.0.0.1 8150 ../../nodes/127.0.0.1/node0/conf/node.key ed157f4588b86d61a2e1745efe71e6ea
# 此处的node.key和cipher_data_key均为自己实际情况生成的位置和具体值
执行后,节点私钥自动被加密,加密前的文件备份到了文件node.key.bak.xxxxxx
中,请将备份私钥妥善保管,并删除节点上生成的备份私钥
此时查看node.key,可看到已经被加密为密文。
节点运行
此时即可启动节点
可以看到节点正常运行,而另外一个终端窗口的Key Manager会在每次节点启动时打印日志:
至此,使用Key Manager加密区块链节点的操作就结束了。
可能遇到的问题
运行make编译报错
在我初次尝试部署时,经常会因为运行make编译时报错如下内容:
gmake[5]: *** [CMakeFiles/cryptopp-object.dir/build.make:146:CMakeFiles/cryptopp-object.dir/asn.cpp.o] 错误 1 gmake[4]: *** [CMakeFiles/Makefile2:86:CMakeFiles/cryptopp-object.dir/all] 错误 2 gmake[3]: *** [Makefile:146:all] 错误 2 make[2]: *** [CMakeFiles/cryptopp.dir/build.make:86:../deps/src/cryptopp-stamp/cryptopp-build] 错误 2 make[1]: *** [CMakeFiles/Makefile2:136:CMakeFiles/cryptopp.dir/all] 错误 2 make: *** [Makefile:91:all] 错误 2
后来在网上寻找了一下解决方案,发现是gcc的版本问题,使用如下命令指定gcc版本即可
apt-get install -y gcc-9 g++-9
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 10 --slave /usr/bin/g++ g++ /usr/bin/g++-9
配置datakey时报错
提示找不到jq的命令,是没有下载的原因执行如下命令下载即可
apt install jq
如有更多其他问题,欢迎讨论~