【发布时间】:2018-07-31 00:41:28
【问题描述】:
我一直在整理 Kubernetes 设置以运行生产 Fabric 1.0.0 网络,下一步是在所有网络资源之间添加 TLS 通信。为了生成 TLS 证书,我设置了 fabric-ca 以使用多个根运行,第一个 CA 用于生成 MSP 签名证书,第二个用于生成 TLS 工件。根据this commit,我还配置了fabric-ca 以生成具有不同配置文件的TLS 证书。
TLS 证书有一个与每个服务器的主机名(“peer-x.peer”)匹配的 CN 记录,以及一些 SAN(但不是服务器的 IP 地址,因为这些是在这些容器启动之前生成的) )。
与 fabric-ca-server/client 的 TLS 通信似乎工作正常。我可以为我的所有同行和订购者创建具有这两个 CA 的注册证书。
在使用configtxgen 创建 orderer 创世块时,我从 TLS ca 中获取了 cacert,并将其放置在 org 的 msp 目录的 tlscacerts 子目录中,因此应在必要时包含它。
我已经能够成功运行peer channel create 和peer channel join 命令,但是在节点加入频道后,我看到领导节点的日志中出现了这个:
[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 中?
【问题讨论】:
-
你确保orderer的TLS证书是由TLS CA的证书签名的吗?
-
我相信是的。 TLS 证书来自第二个 CA,使用
fabric-ca-client enroll ... --caname "TLSCA" --enrollment.profile tls并在 orderer 的 TLS 配置中引用该密钥对。 -
来chat.hyperledger.org,我会尽力帮助你,然后我们可以在这里发布解决方案。