我想先解释一下我理解的正确,如果我是对的,请告诉我真相,如果我错了,也告诉我我错了。我的解释是关于超级账本网络和节点 sdk 如何协同工作以及节点 sdk 如何连接到超级账本网络。
开始吧。当我启动超级账本网络时,它所做的是在端口 7054 上创建 fabric-ca-server docker 映像和容器。在该端口上,它注册了一个用户“admin”,密码为:“adminpwd”。这意味着还制作了证书对于这个用户。现在假设我想从节点 sdk 创建一个新用户。我想我需要做的是拥有管理员证书,以便我可以签署我的请求并且网络知道我是管理员并且是网络。代码的作用是首先写入 getUserContext("admin"),如果找不到,则尝试使用用户名和密码(admin 和 adminpwd)进行注册。我的理解是 getUserContext 转到 hfc-key -store 文件夹并尝试为管理员查找证书。如果找不到,发生注册,然后发生 createUser 函数,它将从 fabric-ca-server docker 映像派生的证书放入 hfc-key-store,因此当管理员尝试再次注册时,它不必去 fabric-ca-server码头工人形象。到目前为止我是对的吗?我现在会问我的问题。
问题 :
我知道在尝试注册时,它不会从 fabric-ca-server docker 映像中获取管理员的原始证书,因为如果它被盗,整个网络就会搞砸。所以它所做的就是从原始证书中派生出某种公共/私有证书和证书,而我可以进行其他操作。问题是:如果有人偷走了我的 hfc-key-store 文件夹,其中有管理员证书。他可以在不注册的情况下进行操作,因为 getUserContext("admin") 会返回 true,它会让它做任何事情。如果有人偷了那个文件夹怎么办?不是很危险吗?
我完全不明白 getUserContext() 和 setUserContext() 以及 createUser() 函数的含义。如果可以的话,请用一种非常容易理解的语言来描述它们,因为我已经很长时间没有尝试解决这个问题了,但没有运气。为什么我们需要这些功能,它们对我们有什么帮助等等。
为什么cryptogen工具不用于生产但fabric-ca-server可用于生产?