Hyperledger fabric gossip 验证 RemotePeer 的证书哈希

Hyperledger fabric gossip authenticate RemotePeer's cert hash

我是 hyperledger fabric 的新手,我有一个关于 gossip 的远程对等身份验证的问题。 因为我们的服务器在内部网络(无法访问互联网),我们需要在我们的peer节点之前设置一个nginx,假设一个orderer,2个org,每个org只有一个peer,peer0.org1(peer01),peer0。 org2(peer02),peer0.org1是我们内部的peer节点,需要通过nginx路由,包括gossip和enable mtls。如果我们有 peer0.org2 的私钥和证书,它应该可以工作,配置如下。

peer01 nginx{

    ssl_certificate        peer02 server crt;
    ssl_certificate_key    peer02 server key;
    ssl_client_certificate peer01 client ca crt;


    location / {
        grpc_pass              to peer02

        grpc_ssl_certificate         peer01 client crt;
        grpc_ssl_certificate_key     peer01 client key;
        grpc_ssl_trusted_certificate  peer02 server ca.crt;

}

但实际上我们没有peer0.org2的私钥,所以我们尝试使用peer01的ca cert assign peer0.org2'属于peer01的证书和密钥,peer01-peer02.crt,peer01-peer02.key.

peer01 nginx{

    ssl_certificate        peer01-peer02 server crt;
    ssl_certificate_key    peer01-peer02 server key;
    ssl_client_certificate peer01 client ca crt;


    location / {
        grpc_pass              to peer02

        grpc_ssl_certificate         peer01 client crt;
        grpc_ssl_certificate_key     peer01 client key;
        grpc_ssl_trusted_certificate  peer02 server ca.crt;

}

但是在fabric gossip源码中,我们发现不能这样做 enter image description here

它将验证远程证书(我认为它是从通道获取的)之间的哈希值并接收 msg'cert,因此最终发生错误并且无法正常工作。

我的解决方案是删除这些验证码并重建 docker,但我不知道重建哪些 docker 图像可以工作,是 fabric-peer,有人能告诉我吗fabric 中的每个 docker 都会使用 源代码中的什么包? 或者可以告诉我比修改源代码更好的解决方案吗?我必须说我们需要使用 tls。 非常感谢。

确实是这个原因,至于:

my solution is that delete these verify codes and rebuild the docker, but I don't know rebuild which docker images can work, is that fabric-peer, can some guys tell me that each docker in fabric will use what package in source code?

您可以删除代码并执行 make peer-docker,它将使用更新后的代码构建一个新的 docker 图像。

至于在官方 Fabric 中修复此 "problem",您可以查看 FAB-8131 并提高对此的认识,因为社区不支持实施它。

您可以考虑的另一件事是使用 non TLS terminating 代理。