TLS握手失败,并显示远程错误:tls:证书服务器错误=订购者

时间:2019-04-23 01:34:05

标签: hyperledger-fabric

我正在尝试在VM上手动设置超级账本结构。我已经生成了所有工件,并配置了module.exports = file => require('@/views/' + file + '.vue').default orderer.yaml。我有在端口core.yaml上运行的订购程序。当我尝试使用对等cli 127.0.0.1:7050命令创建频道时,在对等终端上收到channel create消息。

context deadline exceeded
  

错误:无法创建交付客户端:订购者客户端无法连接到127.0.0.1:7050:无法创建新连接:超出了上下文期限

在订购者终端上,出现以下错误:

  

2019-04-23 09:22:03.707 EDT [core.comm] ServerHandshake-> ERRO 01b TLS握手失败,并显示错误远程错误:tls:错误的证书服务器=订购者remoteaddress = 127.0.0.1:38618

     

2019-04-23 09:22:04.699 EDT [core.comm] ServerHandshake-> ERRO 01c TLS握手失败,并显示错误远程错误:tls:错误的证书server = Orderer remoteaddress = 127.0.0.1:38620

     

2019-04-23 09:22:06.187 EDT [core.comm] ServerHandshake-> ERRO 01d TLS握手失败,并显示错误远程错误:tls:错误的证书server = Orderer remoteaddress = 127.0.0.1:38622

我已经完成了几次配置,不确定是否丢失了某些内容。以下是我的./bin/peer channel create -o 127.0.0.1:7050 -c $CHANNEL_NAME -f ./channel-artifacts/channel.tx --tls --cafile /home/fabric-release/mynetwork/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

orderer.yaml

3 个答案:

答案 0 :(得分:2)

我也遇到了同样的问题,在我的情况下,问题是我对本地目录文件进行了一些更改,并且显然在将这些文件安装回docker容器时,这些更改未成功反映。对我来说解决问题的是

docker volume rm $(docker volume ls)

我再次重新启动了网络,再也没有看到证书错误。值得一试。

答案 1 :(得分:1)

问题是订购者使用的TLS服务器证书没有与“ 127.0.0.1”匹配的SAN。在使用cryptogen生成工件时,可以通过使用自定义 crypto-config.yaml 向TLS证书中添加“ localhost”和/或“ 127.0.0.1”:

# ---------------------------------------------------------------------------
# "OrdererOrgs" - Definition of organizations managing orderer nodes
# ---------------------------------------------------------------------------
OrdererOrgs:
  # ---------------------------------------------------------------------------
  # Orderer
  # ---------------------------------------------------------------------------
  - Name: Orderer
    Domain: example.com
    EnableNodeOUs: false

    # ---------------------------------------------------------------------------
    # "Specs" - See PeerOrgs below for complete description
    # ---------------------------------------------------------------------------
    Specs:
      - Hostname: orderer
        SANS:
          - "localhost"
          - "127.0.0.1"

# ---------------------------------------------------------------------------
# "PeerOrgs" - Definition of organizations managing peer nodes
# ---------------------------------------------------------------------------
PeerOrgs:
  # ---------------------------------------------------------------------------
  # Org1
  # ---------------------------------------------------------------------------
  - Name: org1
    Domain: org1.example.com
    EnableNodeOUs: true
    Template:
      Count: 2
      SANS:
         - "localhost"
         - "127.0.0.1"
    Users:
      Count: 1

  - Name: org2
    Domain: org2.example.com
    EnableNodeOUs: false
    Template:
      Count: 2
      SANS:
         - "localhost"
         - "127.0.0.1"
    Users:
      Count: 1

答案 2 :(得分:0)

当orderer和orderer之间出现TLS握手失败的问题时,很有可能是生成TLS文件时配置参数有误。

如果你是通过fabric-ca注册了TLS,那么你需要检查两个ord​​erer的TLS文件中的CSR属性是否相同。您可以使用以下命令“openssl x509 -in certificate.crt -text -noout”。

下面需要检查orderer enroll的--cer.names、-m等参数是否重复或者不正确。

在TLS文件内容一致且指定HostName的情况下,很少出现握手失败的情况