Swarm部署的Hyperledger Fabric区块链网络上的证书问题

时间:2020-04-28 13:56:17

标签: ssl certificate hyperledger-fabric docker-swarm

使用Hyperledger Fabric v1.4.4在Docker Swarm上部署非常简单的区块链网络时,我遇到了这个特殊问题。它有2个组织(每个组织2个对等方),5个订购者(共识共识),2个CA(每个组织1个)和4个ouchDB(每个对等方1个)。

当我尝试将对等方加入到我刚创建的频道时,会出现问题。终端上显示的消息:

错误:获取渠道背书客户端的错误:背书客户端无法连接到peer0org1:7051:创建新连接失败:超出了上下文期限

当我查看该对等方的日志时,看到一条消息引起了我的注意:

createTransport-> DEBU 13c grpc:addrConn.createTransport无法连接到{peer1car1:8051 0}。错误:连接错误:desc =“传输:身份验证握手失败:x509:证书对peer1.org1,peer1有效,而不对peer1org1有效”。重新连接...

以及实际的错误消息:

UTC [core.comm] ServerHandshake-> ERRO 1b9 TLS握手失败,并显示错误远程错误:tls:错误的证书服务器= PeerServer remoteaddress = 10.0.2.7:50504

然后,我开始查看crypto-config.yaml文件和用于部署堆栈的docker-compose.yaml。在crypto-config.yaml文件中,我将de域密钥声明为“ org1”,并且如您在日志中所看到的,证书对peer1org1有效。但这是问题所在,当我声明服务名称为“ peer0.org1”时,我从Swarm收到一条错误消息,称其为无效名称。

我知道,我知道。日志中的消息是针对另一个对等方的,但是是否存在与我遇到的此问题相关的更改?有任何解决方法的想法吗?

关于另一个主题:我是容器或问题世界的新手,想了解您的意见。您将使用Kubernetes还是Swarm在生产中部署Hyperledger Fabric区块链网络?

1 个答案:

答案 0 :(得分:1)

在您的docker网络中有效的服务名称(我假设它是peer1org1)需要在TLS证书中作为使用者备用名称(SAN)出现。您可以在crypto-config.yaml中指定SANS,如下所示:

PeerOrgs:
  - Name: org1
    Domain: org1
    EnableNodeOUs: true
    Specs:
      - Hostname: peer1
        SANS:
          - "peer1org1"
      - Hostname: peer2
        SANS:
          - "peer2org1"