Hyperledger fabric 在订购方和对等方之间建立TLS通信

Hyperledger fabric 在订购方和对等方之间建立TLS通信,hyperledger-fabric,Hyperledger Fabric,我已经为运行production Fabric 1.0.0网络准备了一个Kubernetes设置,下一步是在所有网络资源之间添加TLS通信。为了生成TLS证书,我将fabric ca设置为使用多个根运行,第一个ca用于生成MSP签名证书,第二个ca用于生成TLS工件。我还配置了fabric ca,以生成具有不同配置文件的TLS证书 TLS证书有一个CN记录,与每台服务器的主机名(“peer-x.peer”)匹配,还有许多SAN(但不是服务器的IP地址,因为这些SAN是在容器启动之前生成的) 与f

我已经为运行production Fabric 1.0.0网络准备了一个Kubernetes设置,下一步是在所有网络资源之间添加TLS通信。为了生成TLS证书,我将fabric ca设置为使用多个根运行,第一个ca用于生成MSP签名证书,第二个ca用于生成TLS工件。我还配置了fabric ca,以生成具有不同配置文件的TLS证书

TLS证书有一个CN记录,与每台服务器的主机名(“peer-x.peer”)匹配,还有许多SAN(但不是服务器的IP地址,因为这些SAN是在容器启动之前生成的)

与fabric ca服务器/客户端的TLS通信似乎工作正常。我可以使用CAs为我的所有同事和订购者创建注册证书

使用
configtxgen
创建orderer genesis块时,我从TLS ca获取了cacert,并将其放置在组织msp目录的
tlscacerts
子目录中,因此应在必要时将其包括在内

我已经能够成功地运行
对等通道创建
对等通道加入
命令,但在对等通道加入后,我在领导者的日志中看到以下内容:

[deliveryClient] StartDeliverForChannel -> DEBU 307 This peer will pass blocks from orderer service to other peers for channel lynnhurst
[ConnProducer] NewConnection -> ERRO 308 Failed connecting to orderer-2.orderer:7050 , error: x509: certificate signed by unknown authority
[ConnProducer] NewConnection -> ERRO 309 Failed connecting to orderer-1.orderer:7050 , error: x509: certificate signed by unknown authority
[ConnProducer] NewConnection -> ERRO 30a Failed connecting to orderer-0.orderer:7050 , error: x509: certificate signed by unknown authority
[deliveryClient] connect -> ERRO 30b Failed obtaining connection: Could not connect to any of the endpoints: [orderer-2.orderer:7050 orderer-1.orderer:7050 orderer-0.orderer:7050]`
这在订购者日志中:

[grpc] Printf -> DEBU 418 grpc: Server.Serve failed to complete security handshake from "172.17.0.16:56444": EOF

很明显,TLS证书仍然存在一些不正确的地方,但是有人知道需要更改什么吗?我是否需要将服务器的IP地址作为SAN包含在TLS CSR中?

有不同的配置,您应该确保已经完成

  • 您必须与网络中的其他成员共享每个组织的公钥
  • 定义对等方和订购方时,应为docker网络定义特定配置。默认情况下,docker容器无法连接到其他主机中的容器。因此,对于网络中的每个容器,您应该定义: 网络模式:主机

  • 最后,每个节点都应该解析其他节点的主机(我知道您已经完成了)

你能试试吗?!如果你不明白我的答案或者你需要更多的信息,再问一遍,好吗?!我希望这是有用的。

事实证明,这是Fabric 1.0.1中的一个错误,如果您的订购者和同行在同一个组织中,就会出现这个错误


您是否确保订购方的TLS证书由TLS CA的证书签署?我相信是这样的。TLS证书来自第二个CA,使用
结构CA客户端注册--caname“TLSCA”-enrollment.profile tls
并在订购方的tls配置中引用该密钥对。请访问chat.hyperledger.org,我将尝试帮助您,然后我们可以在此处发布解决方案。