Fabric CA Server 中的 CA 证书和 TLS 证书有什么区别?

Tre*_*ley 6 hyperledger-fabric

我在fabric-ca-server 二进制文件中看到有一些选项,包括,我不确定为什么需要两个证书文件。为什么我们不能只使用 tls.certfile?

--ca.certfile string  PEM-encoded CA certificate file (default "ca-cert.pem")

                                  
--tls.certfile string  PEM-encoded TLS certificate file for server's listening port (default "tls-cert.pem")
                        
Run Code Online (Sandbox Code Playgroud)

另外,我在以下文件列表中看到显示了两个证书文件。

-rw-r--r-- 1 root   root   61440 Aug  7 05:43 fabric-ca-server.db
-rw-r--r-- 1 root   root     932 Aug  7 05:43 tls-cert.pem
-rw-r--r-- 1 root   root     215 Aug  7 05:43 IssuerRevocationPublicKey
-rw-r--r-- 1 root   root     843 Aug  7 05:43 IssuerPublicKey
-rw-r--r-- 1 root   root     806 Aug  7 05:43 ca-cert.pem
drwxr-xr-x 6 root   root    4096 Jul 23 08:07 msp
-rwxrwxr-x 1 ubuntu ubuntu 16044 Jul 20 07:40 fabric-ca-server-config.yaml
Run Code Online (Sandbox Code Playgroud)

为什么 CA 功能需要两个证书文件,因为这基本上是 TLS 功能?

Jas*_*ick 11

在 Fabric 中,通常有两种类型的证书——签名者证书和 TLS 证书。

对于您的具体问题——Fabric CA 服务器需要一个用于颁发证书的证书(CA 证书),以及一个用于协商 TLS 连接的证书。这些肯定是不同的功能,应该使用不同的证书。

更多背景信息:

正如您想象的那样,TLS 证书用于 TLS 协商。这些证书用于确保组件之间的网络链路完整性。使用标准 TLS,客户端可以确信他们所连接的服务器实际上是他们想要的服务器,而不是另一方假装是他们的目的地。启用相互 TLS 后,除了标准 TLS 的标准客户端->服务器保证之外,服务器还可以验证客户端是否有权形成 TLS 链接。

签名者证书用于在 Fabric 网络上进行交易。客户端使用他们的签名者证书来签署发送给节点的提案和发送给订购者的交易,节点使用他们的签名者证书来签署提案响应(创建背书),订购者使用他们的签名者证书来签署分发回节点和客户端的块。当您看到未明确指出是 TLS 的“证书”引用时,通常该证书是签名者证书。

这两类证书因其执行的功能不同而有所不同。此外,在密码学中,在独立的密码方案中使用相同的私钥通常是不受欢迎的,因为它大大增加了攻击的范围。