0

问题

当我在云中部署具有 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?一个区别是,我在本地使用的是“开发模式”,没有基本图像的恶作剧。

会员服务

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。

4

1 回答 1

0

我的问题是fabric-baseimage docker容器内的fabric版本比较新。这是我的错 - 因为我手动使用织物版本填充了该图像。

背景

如果一个人使用的是 0.6 的 non-vagrant 并且不在 DEV 模式下,那么部署链代码将出现“找不到 :latest tag”错误。为了解决这个问题,我提取了一个 fabric-baseimage 版本,并用我需要的东西填充它,包括一个 git-clone 的 fabric。我应该拉 0.6 分支,但它正在拉主。

所以本质上,我的 fabric-peer、node-sdk 部署器和 baseimage 使用的超级账本版本略有不同。

经过大约 48 小时的配置地狱后,我想我已经通过将所有内容发送回 0.6 来解决它。我现在已经成功地旋转了一切。

我确实希望文档包含有关在非开发多节点环境中部署的内容。

于 2016-12-04T06:53:01.937 回答