我正在 Hyperledger Fabric 网络中设置 RAFT Ordering 服务我对服务器证书和服务器密钥感到困惑

问题描述

我不知道 server.key 和 server.crt 是什么意思。我正在使用我自己的fabric-ca-server 来生成 tls 证书。我在 tls 上单独使用成功,但无法设置 raft 服务。唯一令人困惑的是这个服务器证书和服务器密钥是什么。我正在使用来自 tls 根服务器的 ca-cert.pem。服务器证书和服务器密钥是根 tls 服务器的私钥和签名证书吗?

General.TLS.Enabled = true General.TLS.PrivateKey = 包含服务器私钥的文件的完全限定路径 General.TLS.Certificate = 包含服务器证书的文件的完全限定路径 General.TLS.RootCAs = 包含颁发 TLS 服务器证书的 CA 的证书链的文件的完全限定路径

感谢您的期待

解决方法

我会尽量给出我的解释,你可以找到三个与tls相关的文件:ca.crtserver.crtserver.key .ca.crt是server.crt的根ca crt,server.crt是orderer的证书,server.key > 是orderer的私钥。

  1. orderer1 发送一个 hello 来表明她打算使用 TLS 与 orderer2 通信。
  2. orderer2 提供一个证书 (server.crt),其中包含 orderer2 的身份和 orderer2 的公钥,该证书由 CA (tlsca.example.com) 颁发并带有 CA 的签名。
  3. orderer1 信任这个 CA(tlsca.example.com),并在 orderer2 的证书中验证 CA 的签名(使用从 ca.crt 获得的 ca 的公共密钥)。成功后,orderer1 知道她正在与 orderer2 交谈,并且在证书(server.crt)中,orderer1 获取 orderer2 的公钥。
  4. orderer1 使用这个公钥加密一些秘密。
  5. orderer2 通过使用他自己的私钥(server.key)解密收到的消息来获得该秘密
  6. 基于一些数学运算,orderer1 和orderer2 提出了一些共享材料,这些材料只能由orderer1 和orderer2 知道,没有orderer1 和orderer2 的私钥无法推导出。
  7. 使用相同的共享密钥,现在 orderer1 和 orderer2 可以安全地传达他们的消息。

您可以参考https://kctheservant.medium.com/tls-in-hyperledger-fabric-b38fccb8614c获取更多信息