【问题标题】:Certificate problems on Hyperledger Fabric blockchain network deployed with Swarm使用 Swarm 部署的 Hyperledger Fabric 区块链网络上的证书问题
【发布时间】:2026-01-08 01:15:01
【问题描述】:

我在使用 Hyperledger Fabric v1.4.4 在 Docker Swarm 上部署一个非常简单的区块链网络时遇到了这个特殊问题。它有 2 个组织(每个 2 个 peer)、5 个 orderers(Raft 共识)、2 个 CA(每个组织一个)和 4 个 couchDB(每个 peer 1 个)。

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

错误:获取通道的背书客户端时出错:背书客户端无法连接到 peer0org1:7051:无法创建新连接:超出上下文截止日期

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

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

还有一个实际的错误消息:

UTC [core.comm] ServerHandshake -> ERRO 1b9 TLS 握手失败,出现错误远程错误:tls: bad certificate server=PeerServer remoteaddress=10.0.2.7:50504

然后我开始查看 crypto-config.yaml 文件和用于部署我的堆栈的 docker-compose.yaml。在 crypto-config.yaml 文件中,我将 de Domain 密钥声明为“org1”,正如您在日志中看到的,证书对 pe​​er1org1 有效。但问题是,当我声明服务名称“peer0.org1”时,我从 Swarm 收到一个错误,说它是一个无效名称。

我知道,我知道。日志中的消息是针对另一个对等方的,但是与我遇到的这个问题有关吗?关于如何解决它的任何想法?

关于另一个主题:我是容器或探索世界的新手,想知道您的意见。你会使用 Kubernetes 还是 Swarm 在生产环境中部署 Hyperledger Fabric 区块链网络?

【问题讨论】:

    标签: ssl certificate hyperledger-fabric docker-swarm


    【解决方案1】:

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

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

    【讨论】:

    • 你解决了我的问题。非常感谢你的帮助。我搜索了这个 SANS 密钥,但在 Hyperledger 文档中没有找到任何内容。是通用键吗?你知道为什么吗?
    • 由于cryptogen工具是not intended for production,文档比较短。有关配置文件的最有用信息隐藏在您可以使用cryptogen showtemplate 输出的默认模板中。或查看corresponding source code