我已经在fabric-ca-server二进制文件中看到了一些选项,包括但我不确定为什么需要两个certfile。为什么我们不能只使用tls.certfile?
from connection import *
from sample import *
def test_target(user_suffix,hash_value):
connection = Connection()
cursor = connection.cursor()
username = connection.username
cursor.execute("select * from dba_users u where u.USERNAME like '{}'".format(username))
rows = cursor.fetchall()
for row in rows:
print(row)
cursor.close()
connection.close()
user_suffix="Hello"
hash_value="12345"
test_target(user_suffix,hash_value)
此外,我在下面的文件列表中看到了两个证书文件。
--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")
为什么CA功能需要两个证书文件,因为这基本上是TLS功能?
答案 0 :(得分:3)
在Fabric中,通常有两种类型的证书-签名者证书和TLS证书。
对于您的特定问题-Fabric CA服务器需要用于颁发证书的证书(CA证书)和用于协商TLS连接的证书。这些绝对是不同的功能,应该使用不同的证书。
更多背景信息:
您可能会想到,TLS证书用于TLS协商。这些证书用于确保组件之间的网络链接完整性。使用标准TLS,可以确保客户端连接到的服务器实际上是他们想要的服务器,而不是假装为其目的地的另一方。启用双向TLS后,除了标准TLS的标准客户端->服务器保证之外,服务器还可以验证客户端是否有权形成TLS链接。
签名者证书用于在Fabric网络上进行交易。客户使用其签名者证书对发送给对等方的投标书和发送给订购者的交易进行签名,对等方使用其签名人证书对投标书响应(创建背书)进行签名,而订购者则使用其签名者证书对块进行签名,然后将这些块分发回对等方和客户。通常,当您看到对未明确标记为TLS的“证书”的引用时,该证书就是签名者证书。
这两种证书的不同之处在于它们执行的功能不同。另外,在密码学中,人们普遍不赞成在独立的密码学方案中使用相同的私钥,因为这会大大增加攻击的表面积。