不在 运行 本地时看不到证书属性
Not seeing certificate attributes when not running locally
问题
当我在云中使用 PBFT 或 NOOPS 部署 4 个对等节点时,看不到任何用户证书属性。值为空。
观察结果
本地一切正常。这表明我正在正确调用 API,并且链代码正在正确访问属性。
当我附加到成员容器时,我看到正确的 membersrvc.yaml,其中 aca.enabled 设置为 true。这是在本地工作的同一个 yaml。为了更好地衡量,我还传递了 ENV 变量 MEMBERSRVC_CA_ACA_ENABLED=true.
我可以在会员服务的 ACA 数据库中看到用户的属性。 (暗示用户是用属性创建的)
当我从日志中查看实际证书时(字节到十六进制然后 Base64 解码)我看到了属性。 (附加证书 [30 82 02 dd 30 8....)
部署时所有属性均为空白。没有错误。
会员服务日志
我启用了调试日志记录,并看到会员服务认为它启用了 ACA:
19:57:46.421 [server] main -> DEBU 049 ACA was enabled [aca.enabled == true]
19:57:46.421 [aca] Start -> INFO 04a Staring ACA services...
19:57:46.421 [aca] startACAP -> INFO 04b ACA PUBLIC gRPC API server started
19:57:46.421 [aca] Start -> INFO 04c ACA services started
这看起来不错。我错过了什么?
猜猜
- 可能是链代码部署到的底层 docker 容器没有启用安全性?它是否使用传递给父节点的 ENV?一个区别是我在本地使用 "dev mode" 而不使用基本图像恶作剧。
会员服务
membersrvc:
container_name: membersrvc
image: hyperledger/fabric-membersrvc
volumes:
- /home/ec2-user/membership:/user/membership
- /var/hyperledger:/var/hyperledger
command: sh -c "cp /user/membership/membersrvc.yaml /opt/gopath/src/github.com/hyperledger/fabric/membersrvc && membersrvc"
restart: unless-stopped
environment:
- MEMBERSRVC_CA_ACA_ENABLED=true
ports:
- 7054:7054
根对等服务
rootpeer:
container_name: root-peer
image: hyperledger/fabric-peer
restart: unless-stopped
environment:
- CORE_VM_ENDPOINT=unix:///var/run/docker.sock
- CORE_LOGGING_LEVEL=DEBUG
- CORE_PEER_ID=vp1
- CORE_SECURITY_ENROLLID=vp1
- CORE_SECURITY_ENROLLSECRET=xxxxxxxx
- CORE_SECURITY_ENABLED=true
- CORE_SECURITY_ATTRIBUTES_ENABLED=true
- CORE_PEER_PKI_ECA_PADDR=members.x.net:7054
- CORE_PEER_PKI_TCA_PADDR=members.x.net:7054
- CORE_PEER_PKI_TLSCA_PADDR=members.x.net:7054
- CORE_PEER_VALIDATOR_CONSENSUS_PLUGIN=NOOPS
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/hyperledger:/var/hyperledger
command: sh -c "peer node start"
ports:
- 7051:7051
- 7050:7050
请求如下:
{
"jsonrpc": "2.0",
"method":"query",
"params": {
"chaincodeID": {
"name" :"659cb5dcc3063054e4c90908050eebf68eb2bd193cc1520f1f2d198f0ff42268"
},
"ctorMsg": {
"args":["get_results", "{\"Id\":\"abc123\"}"]
},
"secureContext": "user123",
"attributes":["account_id","role"]
},
"id": 2
}
已编辑*:我以前认为这只是 PBFT...但它也发生在云上的 NOOPS 上。我将示例简化为 NOOPS。
我的问题是 fabric-baseimage docker 容器中的 fabric 版本更新了一点。这是我的错 - 因为我用 fabric 版本手动填充了该图像。
背景
如果使用 0.6 的 non-vagrant 且不在 DEV 模式下,部署链代码将出现 "cannot find :latest tag" 错误。为了解决这个问题,我提取了一个 fabric-baseimage 版本,并用我需要的东西填充它,包括一个 git-fabric 的克隆。我应该拉 0.6 分支,但它却在拉 master。
基本上,我的 fabric-peer、node-sdk 部署程序和 baseimage 使用的超级账本版本略有不同。
经过大约 48 小时的配置地狱,我想我已经通过将所有内容发回 0.6 来理顺了它。我现在已经成功地启动了 terraform。
我希望文档包含有关在非开发多节点环境中部署的内容。
问题
当我在云中使用 PBFT 或 NOOPS 部署 4 个对等节点时,看不到任何用户证书属性。值为空。
观察结果
本地一切正常。这表明我正在正确调用 API,并且链代码正在正确访问属性。
当我附加到成员容器时,我看到正确的 membersrvc.yaml,其中 aca.enabled 设置为 true。这是在本地工作的同一个 yaml。为了更好地衡量,我还传递了 ENV 变量 MEMBERSRVC_CA_ACA_ENABLED=true.
我可以在会员服务的 ACA 数据库中看到用户的属性。 (暗示用户是用属性创建的)
当我从日志中查看实际证书时(字节到十六进制然后 Base64 解码)我看到了属性。 (附加证书 [30 82 02 dd 30 8....)
部署时所有属性均为空白。没有错误。
会员服务日志
我启用了调试日志记录,并看到会员服务认为它启用了 ACA:
19:57:46.421 [server] main -> DEBU 049 ACA was enabled [aca.enabled == true]
19:57:46.421 [aca] Start -> INFO 04a Staring ACA services...
19:57:46.421 [aca] startACAP -> INFO 04b ACA PUBLIC gRPC API server started
19:57:46.421 [aca] Start -> INFO 04c ACA services started
这看起来不错。我错过了什么?
猜猜
- 可能是链代码部署到的底层 docker 容器没有启用安全性?它是否使用传递给父节点的 ENV?一个区别是我在本地使用 "dev mode" 而不使用基本图像恶作剧。
会员服务
membersrvc:
container_name: membersrvc
image: hyperledger/fabric-membersrvc
volumes:
- /home/ec2-user/membership:/user/membership
- /var/hyperledger:/var/hyperledger
command: sh -c "cp /user/membership/membersrvc.yaml /opt/gopath/src/github.com/hyperledger/fabric/membersrvc && membersrvc"
restart: unless-stopped
environment:
- MEMBERSRVC_CA_ACA_ENABLED=true
ports:
- 7054:7054
根对等服务
rootpeer:
container_name: root-peer
image: hyperledger/fabric-peer
restart: unless-stopped
environment:
- CORE_VM_ENDPOINT=unix:///var/run/docker.sock
- CORE_LOGGING_LEVEL=DEBUG
- CORE_PEER_ID=vp1
- CORE_SECURITY_ENROLLID=vp1
- CORE_SECURITY_ENROLLSECRET=xxxxxxxx
- CORE_SECURITY_ENABLED=true
- CORE_SECURITY_ATTRIBUTES_ENABLED=true
- CORE_PEER_PKI_ECA_PADDR=members.x.net:7054
- CORE_PEER_PKI_TCA_PADDR=members.x.net:7054
- CORE_PEER_PKI_TLSCA_PADDR=members.x.net:7054
- CORE_PEER_VALIDATOR_CONSENSUS_PLUGIN=NOOPS
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/hyperledger:/var/hyperledger
command: sh -c "peer node start"
ports:
- 7051:7051
- 7050:7050
请求如下:
{
"jsonrpc": "2.0",
"method":"query",
"params": {
"chaincodeID": {
"name" :"659cb5dcc3063054e4c90908050eebf68eb2bd193cc1520f1f2d198f0ff42268"
},
"ctorMsg": {
"args":["get_results", "{\"Id\":\"abc123\"}"]
},
"secureContext": "user123",
"attributes":["account_id","role"]
},
"id": 2
}
已编辑*:我以前认为这只是 PBFT...但它也发生在云上的 NOOPS 上。我将示例简化为 NOOPS。
我的问题是 fabric-baseimage docker 容器中的 fabric 版本更新了一点。这是我的错 - 因为我用 fabric 版本手动填充了该图像。
背景
如果使用 0.6 的 non-vagrant 且不在 DEV 模式下,部署链代码将出现 "cannot find :latest tag" 错误。为了解决这个问题,我提取了一个 fabric-baseimage 版本,并用我需要的东西填充它,包括一个 git-fabric 的克隆。我应该拉 0.6 分支,但它却在拉 master。
基本上,我的 fabric-peer、node-sdk 部署程序和 baseimage 使用的超级账本版本略有不同。
经过大约 48 小时的配置地狱,我想我已经通过将所有内容发回 0.6 来理顺了它。我现在已经成功地启动了 terraform。
我希望文档包含有关在非开发多节点环境中部署的内容。