在Fabric CA服务器中,CA证书和TLS证书有什么区别?

6

我在fabric-ca-server二进制文件中看到了一些选项,其中包括两个certfiles,但我不确定为什么需要两个证书文件。为什么我们不能只使用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")
                        

此外,我在下面的文件列表中看到了两个证书文件。
-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

为什么在CA功能中需要两个证书文件,既然这基本上是TLS功能呢?
1个回答

11
在Fabric中,通常有两种类型的证书 -- 签名证书和TLS证书。
对于您的具体问题 -- Fabric CA服务器需要一张证书来颁发证书(即CA证书),以及一张证书用于协商TLS连接。这些是完全不同的功能,应该使用不同的证书。
更多背景信息:
TLS证书用于 TLS 协商。这些证书用于确保组件之间的网络链路完整性。通过标准的 TLS,客户端可以确信它们连接到的服务器确实是他们打算连接的服务器,而不是另一个假冒目标的第三方。当启用互相认证的 TLS 时,服务器还可以验证客户端是否被授权形成 TLS 链接,除了来自标准 TLS 的客户端->服务器保证外。
签名证书用于在Fabric网络上进行交易。客户端使用其签名证书对发送给peer的建议和发送给orderer的交易进行签名,peer使用其签名证书对建议响应进行签名(创建背书),orderer使用其签名证书对传回给peer和客户端的块进行签名。当您看到对“证书”的引用时,通常情况下,如果没有明确说明是TLS证书,则这个证书是签名证书。
这两类证书由于执行的不同功能而不同。此外,在密码学中,通常不赞成在独立的密码学方案中使用相同的私钥,因为它会大大增加攻击面积。

1
这是一个很好的分析。我似乎无法通过手动运行fabric-ca-server来获取tls-cert.pem,我得到了ca-cert.pem。你有什么想法吗?我检查了所有的compose yaml文件,但我无法看到它实际上是在哪里生成的。 - Trevor Lee Oakley
1
我进行了更多测试,fabric-ca-server生成了ca-cert.pem和tls-cert.pem文件。 - Trevor Lee Oakley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接