gpt4 book ai didi

ssl - Hyperledger Fabric 网络的 Kubernetes 设置中的链码实例化失败

转载 作者:太空宇宙 更新时间:2023-11-03 13:33:35 25 4
gpt4 key购买 nike

我目前正在尝试将 Hyperledger Fabric 网络的 docker-compose 设置移植到 Kubernetes 中,并在使用结构示例中提供的端到端场景从 cli 容器实例化链代码时不断遇到此错误:

2017-11-07 20:49:55.476 UTC [shim] userChaincodeStreamGetter -> ERRO 001 Error trying to connect to local peer: x509: certificate signed by unknown authority (possibly because of "x509: ECDSA verification failure" while trying to verify candidate authority certificate "tlsca.org0.example.com")
Error starting Simple chaincode: Error trying to connect to local peer: x509: certificate signed by unknown authority (possibly because of "x509: ECDSA verification failure" while trying to verify candidate authority certificate "tlsca.org0.example.com")

这是我的 crypto-config.yml:

OrdererOrgs:
- Name: Orderer
Domain: example.com
Specs:
- Hostname: orderer

PeerOrgs:
- Name: Org0
Domain: org0.example.com
Specs:
- Hostname: peer0
- Hostname: peer1
- Hostname: ca
Users:
Count: 2

下面是我在我的 Kubernetes list 中为对等 pod 使用的环境变量:

  env:
- name: CORE_PEER_ID
value: peer0.org0.example.com
- name: CORE_PEER_ADDRESS
value: peer0.org0.example.com:7051
- name: CORE_PEER_ADDRESSAUTODETECT
value: "true"
- name: CORE_PEER_TLS_SERVERHOSTOVERRIDE
value: peer0.org0.example.com
- name: CORE_PEER_GOSSIP_EXTERNALENDPOINT
value: peer0.org0.example.com:7051
- name: CORE_PEER_LOCALMSPID
value: Org0MSP
- name: CORE_LEDGER_STATE_STATEDATABASE
value: CouchDB
- name: CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS
value: localhost:5984
- name: CORE_LEDGER_STATE_COUCHDBCONFIG_USERNAME
value:
- name: CORE_LEDGER_STATE_COUCHDBCONFIG_PASSWORD
value:
- name: CORE_VM_ENDPOINT
value: unix:///host/var/run/docker.sock
- name: CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE
value: bridge
- name: CORE_LOGGING_LEVEL
value: DEBUG
- name: CORE_PEER_TLS_ENABLED
value: "true"
- name: CORE_PEER_GOSSIP_USELEADERELECTION
value: "true"
- name: CORE_PEER_GOSSIP_ORGLEADER
value: "false"
- name: CORE_PEER_PROFILE_ENABLED
value: "true"
- name: CORE_PEER_TLS_CERT_FILE
value: /etc/hyperledger/fabric/tls/server.crt
- name: CORE_PEER_TLS_KEY_FILE
value: /etc/hyperledger/fabric/tls/server.key
- name: CORE_PEER_TLS_ROOTCERT_FILE
value: /etc/hyperledger/fabric/tls/ca.crt

在链代码实例化步骤之前,一切正常 - channel 创建、将节点加入 channel 、 anchor 节点更新、链代码安装。

最佳答案

所以我还不能根据源代码进行验证(我会在这样做时编辑我的答案)因为 Fabric 已经改变了很多而且我没有重新找到源代码的部分生成此错误,但我很确定我终于设法弄清楚了。

所以这个错误可能会在一组非常特殊的情况下发生:

  • 您已经生成了正确的证书集,然后启动 pod 并尝试运行端到端场景(可能成功也可能不成功);
  • 然后您使用 cryptogen 重新生成了一组证书,启动了一组新的 pod,并尝试再次运行端到端场景,没有先删除现有的链代码图像

发生的事情是,链代码镜像是使用 tls rootcert(以及内置的一些 CORE_* 环境变量)创建的。但是,如果您在运行之间重新生成证书集在不删除链代码镜像的端到端场景中,您最终将尝试根据已烘焙到链代码镜像中的旧 rootcert 验证新的终端实体证书,从中(重新)创建链代码容器.

我刚刚通过以下步骤从最终用户方面成功验证:

  1. 从 Minikube(或任何运行 Kubernetes 的集群)中删除所有链码容器
  2. 启动一组新的 pod 并运行端到端场景 - 它应该会成功;如果不是,这与您遇到的问题不同。
  3. 拆除 pod 。重新生成证书。
  4. 再次旋转 pods 。重新运行端到端场景。这次应该会出现错误。

tl;dr 如果您使用 cryptogen 重新生成一组新证书,请不要忘记删除您的链代码容器镜像。

关于ssl - Hyperledger Fabric 网络的 Kubernetes 设置中的链码实例化失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47191064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com