话先说在前头,本文只对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来访问看看能否被访问到。如下图:
在第一次打开的时候会被要求初始化系统账号与Token。其中Key shares指的是密钥拆分的份数,Key threshold指的是重建密钥所需要的拆分份数。
为了提高安全性,这里Key shares填了6,Key threshold填了5。在第二个界面就能够看到这6个拆分的密钥的具体内容,如下图:
还好,在页面的右下方有下载这个密钥文件的功能直接下载就好,就不用一个一个拷贝了。下载下来的密钥文件一定要放在一个安全的地方(因为这个文件非常重要),我就放在的/home/yzh/Documents/blockchain/vault/config目录下,如下所示:
root@node203:/home/yzh/Documents/blockchain/vault/config# ls
config.json vault-cluster-vault.json
第三个界面需要输入刚刚生成的密钥进行验证,如下图:
这个密钥在哪里得到的呢?其实就是刚刚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了。如下图:
在登录页面需要输入token信息,这个token信息也是vault-cluster-vault.json文件中root_token对应的内容,登录后看到的界面如下图:
系统会默认有一个名为cubbyhole的秘密引擎,但是后面用到的EthSigner用到的是kv引擎所以这个并不适用,需要重新创建一个kv引擎。
选择创建新秘密引擎
创建一个kv类型的秘密引擎
创建一个名为vault的kv引擎
这样就完成了创建,在这里暂无需创建秘密,这个留给后面EthSigner就可以了,至此vault的部署就完毕了。文章来源:https://www.toymoban.com/news/detail-852667.html
Vault 带有各种称为秘密引擎和身份验证方法的可插入组件,它允许与外部系统集成。这些组件的目的是管理和保护您在动态基础设施中的秘密(例如数据库凭证、密码、API 密钥)。所以其实可以用这个东西去跟业务系统做继承使用的,而在Java Spring中也的确有成熟的继承方案。如下图:
但由于一些不能描述的原因,涉及到敏感数据中国公民或企业能否托管到Hashicorp这家美国服务供应商是值得商榷的,因为不知道他是否会在后台偷偷跑什么东西将数据泄露出去,因此基于数据安全性问题我最终还是放弃了这个方案。文章来源地址https://www.toymoban.com/news/detail-852667.html
到了这里,关于【区块链】HyperLedger Besu Vault密钥服务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!