【FISCO BCOS】二十二、使用Key Manager加密区块链节点

news/2024/10/27 20:45:18/

#1024程序员节|征文#   

        落盘加密是对节点存储在硬盘上的内容进行加密,加密的内容包括:合约的数据、节点的私钥。具体的落盘加密介绍,可参考:落盘加密的介绍,今天我们来部署并对节点进行落盘加密

环境:ubuntu 22、搭建单机四节点(节点未启动!)

目录

FISCO BCOS】二十一、使用Key Manager加密区块链节点

部署

首先安装依赖

拉取项目

创建build文件

启动

启动Key Manager

配置dataKey

加密节点私钥

节点运行

可能遇到的问题

运行make编译报错

配置datakey时报错


部署

每一个区块链节点的机构对应一个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

如有更多其他问题,欢迎讨论~


http://www.ppmy.cn/news/1542425.html

相关文章

软件分享丨PDF Shaper

【资源名】PDF Shaper 【地址】https://www.pdfshaper.com/ 【资源介绍】 PDF Shaper Professional是一款功能强大的PDF文档编辑与转换工具,使用它可以对PDF文件进行各种转换、提取、合并、旋转、加密、解密等编辑操作,主要功能有分割和合并PDF文件&…

C语言程序设计:现代设计方法习题笔记《chapter6》上篇

第一题 示例代码 #include <stdio.h> #include <stdlib.h> // 用于使用exit()函数int main() {double maxNumber -1; // 初始设为-1&#xff0c;以便于第一个非负数可以直接成为当前最大值double currentNumber;// 循环读取用户输入while (1) {printf("Ente…

cursor - 地表最强AI编辑器,到底如何用?

cursor - 最强AI编辑器&#xff0c;到底如何使用&#xff1f; 阅读时长&#xff1a;15分钟 本文内容&#xff1a; cursor有哪些特点&#xff1f;如何科学的使用cursor编辑器&#xff1f; 介绍&#xff1a;cursor是一款AI编辑器&#xff0c;它有着独特的全局Context&#xff0c;…

分组排序函数、dense_rank() 函数的使用、MySQL之dense_rank()、Hive之dense_rank()函数

文章目录 一、dense_rank() 函数二、使用案例2.1、按成绩进行排名2.2、获取排名前五的数据2.3、分组后再排名 三、总结3.1、row_number()、rank() 和 dense_rank() 的区别 DENSE_RANK()是一种窗口函数&#xff0c;用于在数据库中计算密集等级。它为每个行分配一个密集等级&…

怎么用c++的fill函数?

功能描述&#xff1a; 向容器中填充指定的元素 函数原型&#xff1a;fill(iterator beg, iterator end, value); // 向容器中填充元素 // beg 开始迭代器 // end 结束迭代器 // value 填充的值 示例&#xff1a; #include <numeric> #include <vector> #inclu…

用Spring Boot实现的在线厨艺学习平台

1 绪论 1.1 研究背景 现在大家正处于互联网加的时代&#xff0c;这个时代它就是一个信息内容无比丰富&#xff0c;信息处理与管理变得越加高效的网络化的时代&#xff0c;这个时代让大家的生活不仅变得更加地便利化&#xff0c;也让时间变得更加地宝贵化&#xff0c;因为每天的…

从 Web2 到 Web3:区块链技术的演进与未来趋势

在互联网的发展历程中&#xff0c;我们正经历着从 Web2 向 Web3 的重大转变。这个转变的核心驱动力之一&#xff0c;便是区块链技术的不断演进。 Web2 时代&#xff0c;互联网上的社交媒体、在线购物、视频分享等平台蓬勃发展。用户可以便捷地获取信息、与他人交流互动&#x…

uniapp-components(封装组件)

<myitem></myitem> 在其他类里面这样调用。