【区块链】HyperLedger Besu Vault密钥服务

这篇具有很好参考价值的文章主要介绍了【区块链】HyperLedger Besu Vault密钥服务。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

话先说在前头,本文只对Vault整合Hyperledger Besu区块链(以下简称“besu”)部署进行说明,并不推荐使用Vault服务(原因下面会说)。Vault的主要作用在于系统化存储用户信息并配合EthSigner实现个人权证签署。


besu关于密钥存储提供了线上和线下两种存储方案,当初为了方便扩展选择了使用Vault的KV模式存储方案。
首先先下载Docker镜像:

docker pull vault:1.11.0

在镜像下载的时候可以先在服务器中先建好目录。由于Vault需要为EthSigner提供服务,为了避免网络开销将Vault部署在node203服务器上(服务器详情可以查看《【区块链】HyperLedger Besu Docker异地组网》一文)。区块链的根目录为:/home/yzh/Documents/blockchain/,在此基础上建立Vault目录及其下属目录config、file和logs:

# 切换目录
cd /home/yzh/Documents/blockchain/
# 创建vault目录
mkdir vault
# 切换至vault目录内部
cd vault
# 创建额外目录
mkdir config file logs

之后就可以创建docker-compose文件。为了区分区块链构建所需的多个docker-compose文件,因此将文件名改为了vault-compose.yml,内容如下:

version: '3'
  
services:
  vault:
    image: vault:1.11.0
    volumes:
      - /home/yzh/Documents/blockchain/vault/config:/vault/config:rw
      - /home/yzh/Documents/blockchain/vault/file:/vault/file:rw
      - /home/yzh/Documents/blockchain/vault/logs:/vault/logs:rw
    cap_add:
      - IPC_LOCK
    command: vault server -config=/vault/config/config.json
    restart: always
    networks:
      besu_bridge:
        ipv4_address: 192.20.0.3
    ports:
      - 8200:8200
    environment:
      - VAULT_ADDR=http://0.0.0.0:8200
      - VAULT_API_ADDR=http://0.0.0.0:8200
      - VAULT_ADDRESS=http://0.0.0.0:8200

networks:
  besu_bridge:
    ipam:
      config:     
        - subnet: 192.20.0.0/24

注意:若在生产环境使用时需要对内存进行锁定需要cap_add参数进行锁定操作,而command参数则是启动Vault是需要读取的配置文件指向。

由于Vault官方镜像不能使用Docker Swarm网络(通过docker stack deploy部署时会提示cap_add参数无效),为了能够有一个固定的ip这里需要创建一个新的桥接网络vault_besu_bridge网段为192.20.0.x,分配给Vault的ip为192.20.0.3。

root@node203:/home/yzh/Documents/blockchain/vault# docker network ls
NETWORK ID          NAME                 DRIVER              SCOPE
z2w4r5fo1588        besu_swarm           overlay             swarm
f5a6b27119ef        bridge               bridge              local
e1902557eda0        docker_gwbridge      bridge              local
c5ad4fc3d434        host                 host                local
u5vjecempood        ingress              overlay             swarm
f96d226b8f69        none                 null                local
75f6834bc0cf        prometheus_default   bridge              local
e0696cd11fd1        vault_besu_bridge    bridge              local

接下来就可以通过语句启动服务:

 docker-compose -f vault-compose.yml up -d

差点忘了/vault/config/config.json的配置信息了,这里指定了8200端口与UI界面启动的配置信息,如下所示:

{
  "backend": {
    "file": {
      "path": "/vault/file"
    }
  },
  "listener": {
    "tcp": {
      "address": "0.0.0.0:8200",
      "tls_disable": "true"
    }
  },
  "default_lease_ttl": "168h",
  "max_lease_ttl": "720h",
  "ui": true
}

服务启动后我们就通过http://192.168.200.203:8200/ui/vault/init来访问看看能否被访问到。如下图:
1.png
在第一次打开的时候会被要求初始化系统账号与Token。其中Key shares指的是密钥拆分的份数,Key threshold指的是重建密钥所需要的拆分份数。
B416BB91-0CB3-470C-8C1A-EE6C612F6E1A.png
为了提高安全性,这里Key shares填了6,Key threshold填了5。在第二个界面就能够看到这6个拆分的密钥的具体内容,如下图:
DC6FD11C-5E3F-494D-B8B4-522E4A548532.png
还好,在页面的右下方有下载这个密钥文件的功能直接下载就好,就不用一个一个拷贝了。下载下来的密钥文件一定要放在一个安全的地方(因为这个文件非常重要),我就放在的/home/yzh/Documents/blockchain/vault/config目录下,如下所示:

root@node203:/home/yzh/Documents/blockchain/vault/config# ls
config.json  vault-cluster-vault.json

第三个界面需要输入刚刚生成的密钥进行验证,如下图:
1DADC074-CF17-4198-A2A6-F711E12C3402.png
这个密钥在哪里得到的呢?其实就是刚刚vault-cluster-vault.json文件中的key的内容,如下所示:

{
  "keys": [
    "c5a89558d279df58a795f2aac27822559c3a182d4c79300023633b9c345d1ef88c",
    "a68093fb278f02863a3ae94b3acb73e3953ac673fe600152d7a83b21dafb0e5613",
    "e81539da0674f65018c032994ff8d3ebd5a21dfffd35b9885a91326ca1a78e4f03",
    "f9ec8165d6a15f41281c846b9cecbb20faaf33e85863b02befa54162aaae4a957b",
    "7d2359085317a5c21497d545cc534e933931ad800796a4d328463452671a79764c",
    "a9f85512697ba721973dc8d95d1af1f3353e2c0e5197cc1098af4e7d63352056c7"
  ],
  "keys_base64": [
    "xaiVWNJ531inlfKqwngiVZw6GC1MeTAAI2M7nDRdHviM",
    "poCT+yePAoY6OulLOstz45U6xnP+YAFS16g7Idr7DlYT",
    "6BU52gZ09lAYwDKZT/jT69WiHf/9NbmIWpEybKGnjk8D",
    "+eyBZdahX0EoHIRrnOy7IPqvM+hYY7Ar76VBYqquSpV7",
    "fSNZCFMXpcIUl9VFzFNOkzkxrYAHlqTTKEY0UmcaeXZM",
    "qfhVEml7pyGXPcjZXRrx8zU+LA5Rl8wQmK9OfWM1IFbH"
  ],
  "root_token": "hvs.PeIrFgZ1Q5Gjs3sbKjijEYiO"
}

将这里面key的内容一个一个拷贝过去验证就可以了,验证完成后就可以登录vault了。如下图:
0394169C-A36A-484B-8AEB-9F0968C0D435.png
在登录页面需要输入token信息,这个token信息也是vault-cluster-vault.json文件中root_token对应的内容,登录后看到的界面如下图:
2.png
系统会默认有一个名为cubbyhole的秘密引擎,但是后面用到的EthSigner用到的是kv引擎所以这个并不适用,需要重新创建一个kv引擎。
975E217E-7524-4F11-914F-EA2460C767D4.png
选择创建新秘密引擎
490A17C7-B61C-4772-9F09-C999D5E26994.png
创建一个kv类型的秘密引擎
EA96E415-123D-4BEF-85AF-A65F745FE341.png
创建一个名为vault的kv引擎
image.png

这样就完成了创建,在这里暂无需创建秘密,这个留给后面EthSigner就可以了,至此vault的部署就完毕了。


Vault 带有各种称为秘密引擎身份验证方法的可插入组件,它允许与外部系统集成。这些组件的目的是管理和保护您在动态基础设施中的秘密(例如数据库凭证、密码、API 密钥)。所以其实可以用这个东西去跟业务系统做继承使用的,而在Java Spring中也的确有成熟的继承方案。如下图:
image.png
但由于一些不能描述的原因,涉及到敏感数据中国公民或企业能否托管到Hashicorp这家美国服务供应商是值得商榷的,因为不知道他是否会在后台偷偷跑什么东西将数据泄露出去,因此基于数据安全性问题我最终还是放弃了这个方案。文章来源地址https://www.toymoban.com/news/detail-852667.html

到了这里,关于【区块链】HyperLedger Besu Vault密钥服务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 搭建 Hyperledger Fabric区块链网络

    这里以下载最新版为例,得益于官网文档;网址为:教程 或者使用该命令下载指定版本  wget https://studygolang.com/dl/golang/go1.19.linux-amd64.tar.gz 之后解压到指定文件,一般为 /usr/local/下 ,需要配置环境变量

    2024年01月20日
    浏览(59)
  • Hyperledger Fabric项目搭建区块链浏览器Hyperledger-blockchain-explorer

    区块链浏览器官网:https://github.com/hyperledger/blockchain-explorer 如果虚拟机没有联网,导致下载不下来,也可以前往Fabric-explorer附件下载进行下载,之后在本地根据需要修改,修改后上传到虚拟机 此时目录结构如下图所示 3.1修改test-network.json—— 网络配置文件,包含身份的指定

    2024年02月08日
    浏览(50)
  • 区块链技术和Hyperledger Fabric介绍

    1.1.1 起源 在比特币诞生之时,技术专家们开始研究比特币的底层技术,并抽象提取出来,形成区块链技术,或者称分布式账本技术。 1.1.2 定义 简称BT(Blockchain technology),也称为分布式账本技术,是一种互联网数据库技术,其特点是去中心化、公开透明,让每个人均可参与

    2024年02月22日
    浏览(39)
  • 区块链 2.0:Hyperledger Fabric学习(一)

    参考链接1 操作系统 : Ubuntu 22.04 一、启动命令 1.进入文件夹目录,启动网络(fabric-samples/fabcar) 2.可能错误: 没有配置JAVA_HOME环境变量 使用JAVA 18会出现无法编译的错误,更换为JAVA 8之后成功解决 二、脚本解析

    2024年02月12日
    浏览(40)
  • 【Hyperledger Fabric】学习笔记1—— 区块链介绍

    目录 1. 区块链介绍 1.1 区块链技术起源 1.1.1 区块链技术 1.1.2 区块链技术发展 1.2 区块链核心技术 1.2.1 定义 1.2.2 区块链技术原理 1.2.3 区块链工作过程 1.3 区块链开发平台 1.3.1 公有链平台 1.3.2 联盟链系统 1.3.3 应用场景 1.1.1 区块链技术 1.1.2 区块链技术发展 1.2.1 定义 1.2.2 区块链

    2023年04月23日
    浏览(43)
  • 区块链——Hyperledger Fabric2.2多机搭建及区块链浏览器

    1、设置网络 2、安装docker和docker-compose 3、安装golang环境 1、编写证书文件 2、生成证书文件 3、复制证书文件到节点 1、编写创世块文件 2、生成创世块文件和通道文件 1、生成创世区块 2、生成通道文件 3、为 Org1 定义锚节点 4、为 Org2 定义锚节点 5、将生成的文件拷贝到另两台

    2024年02月11日
    浏览(38)
  • 【跟小嘉学习区块链】二、Hyperledger Fabric 架构详解

    【跟小嘉学习区块链】一、区块链基础知识与关键技术解析 【跟小嘉学习区块链】二、区块链基础知识与关键技术解析 本系列章节主要讲解 Hyperledger 社区、Hyperledger项目、Hyperledger 社区工作流程、Hyperledger Fabric 架构详解 [参考资料] Fabric技术概览 Fabric智能合约 Fabric架构初探

    2024年02月08日
    浏览(42)
  • Hyperledger Fabric explorer区块链浏览器搭建

    https://github.com/hyperledger-labs/blockchain-explorer 官方浏览器的github地址 根据文档,采用docker容器的方法搭建explorer。 根据官方提供的文件,需要创建的目录结构如下: 这是官网提供的模板 这里的organizations就是你搭建区块链网络的证书配置文件crypto-config文件,因为之前的网络创建

    2024年02月11日
    浏览(51)
  • 基于区块链技术的超级账本(Hyperledger) - 从理论到实战

    什么是区块链?简单来说区块链就是一个分布式的记账本,或者分布式的数据库。 区块链的数据结构是一个链表,交易数据被存储到链表的区块中,区块链的第一个区块叫创世区块,除了创世块以外,每个区块还包含前一个区块的哈希指针,这个哈希指针的值是根据前一个区

    2024年01月18日
    浏览(47)
  • 【区块链学习】番外一:Hyperledger Fabric 2.x环境搭建

    由于疫情,只能乖乖滚回家了。回到家休息了几天,整理了一下家里的资源,找到一台win10老台式机,重装了Ubuntu18.04系统勉强够用。之前在实验室搭建过一次环境,这次希望少踩一些坑。 惯例,先附上hyperledger fabric的官方文档 更换镜像源(阿里云) 正式安装环境前,咱先把

    2024年02月02日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包