使用多个组织订货人创建Hyperledger Fabric通道时出现TLS握手错误

问题描述 投票:0回答:4

场景:我有两个组织,每个组织有两个同行。现在,我希望每个组织也提供一个订货人节点。

下面是我的crypto-config.yaml文件:

OrdererOrgs:

  - Name: Orderer1
    Domain: org1.xyz.com
    Template:
    Count: 1

  - Name: Orderer2
    Domain: org2.xyz.com
    Template:
    Count: 1

下面是我的configtx.yaml文件:

 - &OrdererOrg1

    Name: OrdererOrg01
    ID: Orderer1MSP
    MSPDir: crypto-config/ordererOrganizations/org1.xyz.com/msp
    Policies:
        Readers:
            Type: Signature
            Rule: "OR('Orderer1MSP.member')"
        Writers:
            Type: Signature
            Rule: "OR('Orderer1MSP.member')"
        Admins:
            Type: Signature
            Rule: "OR('Orderer1MSP.admin')"

- &OrdererOrg2

    Name: OrdererOrg02
    ID: Orderer2MSP
    MSPDir: crypto-config/ordererOrganizations/org2.xyz.com/msp
    Policies:
        Readers:
            Type: Signature
            Rule: "OR('Orderer2MSP.member')"
        Writers:
            Type: Signature
            Rule: "OR('Orderer2MSP.member')"
        Admins:
            Type: Signature
            Rule: "OR('Orderer2MSP.admin')"

下面是我的docker-compose-cli.yaml文件:

services:

     orderer.xyz.com:
        extends:
        file:   base/docker-compose-base.yaml
        service: orderer.xyz.com
        container_name: orderer.xyz.com
        networks:
         - byfn

    orderer0.xyz.com:
       extends:
       file:   base/docker-compose-base.yaml
       service: orderer0.xyz.com
       container_name: orderer0.xyz.com
       networks:
        - byfn

我尝试使用以下命令创建一个通道:

peer channel create -o orderer.xyz.com:7050 -t 60s -c bay -f ./channel-artifacts/channel.tx --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/org1.xyz.com/orderers/orderer0.org1.xyz.com/msp/tlscacerts/tlsca.org1.xyz.com-cert.pem

在创建频道时,我在Orderer容器日志上收到以下错误:

[core.comm] ServerHandshake - > ERRO 015 TLS握手失败,错误远程错误:tls:bad certificate {“server”:“Orderer”,“remote address”:“172.22.0.18:48594”}

那么,对于提供同行的组织,提供订购者节点还是单独的第三个组织,是否有可能提供订购者节点(如教程中所述)?为什么我会收到此错误?

感谢您的时间并告诉我们如果您需要任何进一步的信息。

hyperledger-fabric hyperledger hyperledger-fabric-ca
4个回答
1
投票

我终于能够找到这个问题背后的实际原因。问题在于docker-compose-cli.yaml文件中的orderer容器的服务名称。服务名称应与hostname.domain模式后面的crypto-config.yaml文件中指定的名称匹配。

所以,我更改了docker-compose-cli.yaml文件中的orderer配置,如下所示:

services:

  orderer0.telco1.vodworks.com:
    extends:
      file:   base/docker-compose-base.yaml
      service: orderer.vodworks.com
    container_name: orderer.vodworks.com
    networks:
      - byfn

  orderer0.telco2.vodworks.com:
    extends:
      file:   base/docker-compose-base.yaml
      service: orderer0.vodworks.com
    container_name: orderer0.vodworks.com
    networks:
      - byfn

在此之后,我通过添加正确的orderers名称修改了script.sh和utils.sh脚本中的peer channel命令。经过这几次更改后,我能够成功运行我的网络,并通过安装链式代码验证了此部署。

感谢@ arnaud-j-le-hors的示例应用程序帮助我解决了这个问题。


0
投票

我不知道你是如何定义网络中组织和同行的结构的,但是,通过观察你为--cacert和配置文件指定的路径,在我看来,telco1.vodworks.com没有被指定为orrrer组织。

总的来说,我可能会问,你确定--cacert的路径是正确的吗?


0
投票

我不是这里的专家,但我不确定你为什么要连接到orderer.xyz.com?我有一个看起来像你正在尝试做的设置,为此你应该给你想要创建的每个订购节点命名,方法是将以下行添加到你的crypto-config文件中(对于两个ord​​erers) :

Specs:
  - Hostname: orderer

您应该在您的撰写文件中定义两个相应的容器,一个名为orderer.org1.xyz.com,另一个名为orderer.org2.xyz.com。

然后,您应该可以通过联系orderer.org1.xyz.com来创建频道。


0
投票

在我的情况下,我得到了这个错误

[core.comm] ServerHandshake -> ERRO 025 TLS handshake failed with error remote error: tls: internal error {"server": "Orderer", "remote address": "190.22.189.42:40746"}

当我使用fabric sdk连接到使用TLS的Fabric网络时。要解决此问题,您需要确保连接配置文件在Orderer部分中使用hostnameOverride属性这个示例

orderers:

orderer.example.com:url:grpcs:// localhost:7050

# these are standard properties defined by the gRPC library
# they will be passed in as-is to gRPC client constructor
grpcOptions:
  hostnameOverride: orderer.example.com
  grpc-max-send-message-length: 15
  grpc.keepalive_time_ms: 360000
  grpc.keepalive_timeout_ms: 180000

请查看下一个示例以获取更多信息:https://github.com/hyperledger/fabric-sdk-java/blob/master/src/test/fixture/sdkintegration/network_configs/network-config-tls.yaml

我真的在这个错误中工作了几天,最后我找到了解决方案

欲了解更多信息,面料培训,或为智利和拉丁美洲的Hyperledger Fabric公司的业务和政府开发区块链解决方案,请访问qazxsw poi

© www.soinside.com 2019 - 2024. All rights reserved.