keymanager、gen_data_secure_key.sh和encrypt_node_key.sh脚本的使用(个人笔记,仅供参考,谢谢!)

1.前置条件:

#安装Git

sudo yum install -y git

#安装cmake

yum install -y epel-release

yum install -y cmake3

mkdir cmake_pack

cd cmake_pack

wget https://cmake.org/files/v3.3/cmake-3.3.2.tar.gz

tar xzvf cmake-3.3.2.tar.gz

yum install gcc-c++

cd cmake-3.3.2

./bootstrap

gmake

make install

#查看cmake版本

cmake3 --version

#安装 c c++ gcc gcc-c++

yum -y install gcc gcc-c++ kernel-devel

#安装 jq

sudo yum install -y jq

2.搭建FISCO BCOS联盟链(Air版本,4节点非国密联盟链)

 #安装依赖

sudo yum install -y curl openssl openssl-devel wget

 # 创建操作目录

cd ~ && mkdir -p fisco && cd fisco

 # 下载建链脚本
curl -#LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/releases/v3.6.0/build_chain.sh && chmod u+x build_chain.sh

#部署

bash build_chain.sh -l 127.0.0.1:4

 注意!!!节点生成后,不能启动,dataKey配置后将得到的cipher_data_key写入节点的配置文件再启动。一旦节点开始运行,无法切换启用/禁用落盘加密模式。

3.部署Key Manager(PS: -g 为国密版) 

 #安装依赖包

sudo yum install -y procps-ng-devel

sudo yum install -y curl-devel

 #建

cd ~ && git clone https://github.com/FISCO-BCOS/key-manager.git

cd key-manager && mkdir build && cd build

# Notice: There are ".." behind.

cmake3 ..

#The execution: "key-manager" generated.

make

 #启动Key Manager

# 参数:端口,superkey

./key-manager 8150 123xyz # key-manager <port> <superkeyString>

# 若是国密区块链节点,请使用如下命令启动Key Manager

./key-manager 8150 123xyz -g # key-manager <port> <superkeyString> <guomi version>

 若启动成功,打印日志(如下)

(加密需要持续不能退出,打印信息后开启第二个终端)

4.配置dataKey(此处需要第二个终端)

cd key-manager/scripts

bash gen_data_secure_key.sh 127.0.0.1 8150 123456

 脚本自动打印出落盘加密需要的ini配置。 此时得到节点的cipherDataKey:cipher_data_key=ed157f4588b86d61a2e1745efe71e6ea 将得到的落盘加密的ini配置,写入节点配置文件(config.ini)中,此处以node0为例

cd ~ && vi fisco/nodes/127.0.0.1/node0/config.ini

修改[storage_security]中的字段如下。

5.加密节点私钥

执行脚本,加密所有节点的私钥,此处以node0节点为例

cd key-manager/scripts

# 参数:ip port 节点私钥文件 cipherDataKey

# 加密SSL连接私钥

bash encrypt_node_key.sh 127.0.0.1 8150 ../../fisco/nodes/127.0.0.1/node0/conf/ssl.key ed157f4588b86d61a2e1745efe71e6ea

 # 加密节点签名私钥

bash encrypt_node_key.sh 127.0.0.1 8150 ../../fisco/nodes/127.0.0.1/node0/conf/node.pem ed157f4588b86d61a2e1745efe71e6ea

  

 注意:所有需要加密的文件列举如下。若未加密,节点无法启动。

非国密版

conf/ssl.key

conf/node.pem

国密版

conf/sm_ssl.key

conf/sm_enssl.key

conf/node.pem

#节点运行

cd ~/fisco/nodes/127.0.0.1/node0/

bash start.sh

重要!!!

最终是无法启动的,原因是key-manager服务的代码有问题,从途中可以看到,datakey=123456被加密成秘文,然后把该秘文解密的时候,返回的是313233343536(其实是123456的ascii码,导致无法解密数据)

key-manager我使用的是github的最新master分支,是有问题的,但release下有1.0.0版本,可能该版本是可用的。

属于一个坑吧,如果有大佬解决了的,也希望您能分享一下您的经验,感激不尽!!!

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是对该函数的多行注释以及为其定义的调用主函数: ```python import requests # 定义一个私有函数,用于发送HTTP请求 # 输入:请求方法(get、post等)、资源路径、请求数据(json格式) # 输出:HTTP响应对象 def _do_http_request(self, method, resource, json=None): verify = self._verify_server # 获取是否验证服务器证书的标志位 headers = self._build_auth_headers() # 获取认证头信息 try: resp = method(resource, headers=headers, json=json, verify=verify) # 发送HTTP请求 except requests.exceptions.Timeout as ex: raise exception.KeyManagerError(str(ex)) # 如果请求超时,则抛出异常 except requests.exceptions.ConnectionError as ex: raise exception.KeyManagerError(str(ex)) # 如果连接失败,则抛出异常 except Exception as ex: raise exception.KeyManagerError(str(ex)) # 如果其他异常,则抛出异常 # 根据HTTP响应状态码进行处理 if resp.status_code in _EXCEPTIONS_BY_CODE: raise exception.KeyManagerError(resp.reason) # 如果状态码为异常状态,则抛出异常 if resp.status_code == requests.codes['forbidden']: raise exception.Forbidden() # 如果状态码为禁止状态,则抛出异常 return resp # 返回HTTP响应对象 # 定义一个调用主函数,在该函数中调用_do_http_request函数,并添加输出语句 def main_function(): # 假设有一个KeyManager对象,且已经初始化好了 key_manager = KeyManager() # 调用_do_http_request函数发送HTTP请求,获取响应对象 resp = key_manager._do_http_request(requests.get, '/api/v1/user', json={'id': 123}) # 输出响应状态码和响应内容 print("Response Status Code: ", resp.status_code) print("Response Content: ", resp.content) ``` 在_do_http_request函数中,首先获取是否验证服务器证书的标志位和认证头信息。然后,使用requests库发送HTTP请求,并根据HTTP响应状态码进行处理,最后返回HTTP响应对象。在主函数中,首先创建一个KeyManager对象,然后调用_do_http_request函数发送HTTP请求,并输出响应状态码和响应内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值