问题描述
我不知道 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.crt、server.crt、server.key .ca.crt是server.crt的根ca crt,server.crt是orderer的证书,server.key > 是orderer的私钥。
- orderer1 发送一个 hello 来表明她打算使用 TLS 与 orderer2 通信。
- orderer2 提供一个证书 (server.crt),其中包含 orderer2 的身份和 orderer2 的公钥,该证书由 CA (tlsca.example.com) 颁发并带有 CA 的签名。
- orderer1 信任这个 CA(tlsca.example.com),并在 orderer2 的证书中验证 CA 的签名(使用从 ca.crt 获得的 ca 的公共密钥)。成功后,orderer1 知道她正在与 orderer2 交谈,并且在证书(server.crt)中,orderer1 获取 orderer2 的公钥。
- orderer1 使用这个公钥加密一些秘密。
- orderer2 通过使用他自己的私钥(server.key)解密收到的消息来获得该秘密
- 基于一些数学运算,orderer1 和orderer2 提出了一些共享材料,这些材料只能由orderer1 和orderer2 知道,没有orderer1 和orderer2 的私钥无法推导出。
- 使用相同的共享密钥,现在 orderer1 和 orderer2 可以安全地传达他们的消息。
您可以参考https://kctheservant.medium.com/tls-in-hyperledger-fabric-b38fccb8614c获取更多信息