在订购者和同行之间建立TLS通信

时间:2017-08-17 13:49:27

标签: hyperledger-fabric

我一直在组建一个用于运行生产Fabric 1.0.0网络的Kubernetes设置,下一步是在所有网络资源之间添加TLS通信。为了生成TLS证书,我将fabric-ca设置为以多个根运行,第一个CA用于生成MSP签名证书,第二个CA用于生成TLS工件。根据{{​​3}},我还配置了fabric-ca来生成具有不同配置文件的TLS证书。

TLS证书的CN记录与每个服务器的主机名(" peer-x.peer")和许多SAN(但不是服务器的IP地址)匹配,因为这些是生成的在那些容器旋转之前)。

与fabric-ca-server /客户端的TLS通信似乎工作正常。我可以为所有同行和订购者创建两个CA的注册证书。

使用configtxgen创建orderer genesis块时,我已从TLS ca中获取cacert并将其放在org的msp目录的tlscacerts子目录中,因此它应该包括在必要的地方。

我已经能够成功运行peer channel createpeer channel join命令,但在对等方加入频道后,我看到它出现在领导对等方的日志中:< / p>

[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证书的内容仍然不对,但有人会知道可能需要更改的内容吗?我是否需要在TLS CSR中包含服务器的IP地址作为SAN?

2 个答案:

答案 0 :(得分:2)

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

https://jira.hyperledger.org/browse/FAB-5845

答案 1 :(得分:1)

您应该确保完成了不同的配置。

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

    network_mode:host

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

你能试试吗?!如果您不理解我的答案或者您需要了解更多信息,请再次询问,好吗?!我希望这很有用。