Hyperledger fabric 如何让用户在hyperledger结构中的任何事务之前上载私钥文件?

Hyperledger fabric 如何让用户在hyperledger结构中的任何事务之前上载私钥文件?,hyperledger-fabric,hyperledger,ca,Hyperledger Fabric,Hyperledger,Ca,我知道Hyperledger将用户的私钥存储在一个名为keystore的目录中。我不希望我的网络存储它,而是用户应该在任何交易前上传此文件。 怎么做 我没有完整的代码提供给您,也没有时间编写。但是,您可以遵循以下流程: 前端:允许用户上载文件(例如(假设您正在构建web应用程序):) 后端:从请求中检索文件 后端:从这些文件创建用户上下文 后端:生成/发送事务 结构:处理事务 后端:如果事务有效,则删除有关用户的所有信息(特别是私钥) 后端:将响应发送回前端 我不知道你的情况是什么,但是:

我知道Hyperledger将用户的私钥存储在一个名为keystore的目录中。我不希望我的网络存储它,而是用户应该在任何交易前上传此文件。
怎么做

我没有完整的代码提供给您,也没有时间编写。但是,您可以遵循以下流程:

  • 前端:允许用户上载文件(例如(假设您正在构建web应用程序):)
  • 后端:从请求中检索文件
  • 后端:从这些文件创建用户上下文
  • 后端:生成/发送事务
  • 结构:处理事务
  • 后端:如果事务有效,则删除有关用户的所有信息(特别是私钥)
  • 后端:将响应发送回前端

我不知道你的情况是什么,但是:

  • 我认为让用户管理自己的密钥是一种风险,因为他可能会丢失密钥,或者有人可能“黑客”用户设备以获取密钥
  • 私钥在网络上移动可能是一个安全问题,有人可能会拦截它

但正如我所说,我不知道你的情况。如果您在一个封闭的网络中,那么传送PK可能不是问题。如果您的客户机应用程序为用户管理密钥,也可以,但是如果用户错误地删除了它呢?或者如果设备坏了怎么办?

我认为对密钥库文件夹的功能和您希望在这里实现的功能存在误解

在MSP的上下文中,keystore文件夹确实存储私钥。它存储由MSP表示的身份的私钥。但是,这对于运行MSP的节点来说是非常独特的

在对等机上,密钥库将存储对等机的证书和对等机标识的密钥。它不会存储任何其他身份的密钥,因为该节点并不打算充当该身份(请记住,private的所有权=能够充当该身份)。它还将存储作为该对等方管理员的身份的证书(而不是私钥)


通过允许用户上传私钥,您到底想做什么?如果您试图允许用户在网络上标识自己,那么提供他们的密钥并不是解决方案。如果是其他内容,请尝试编辑您的帖子,以便更清楚地解释您的用例,以便我们提供帮助。

这与HLF本身并没有真正的关系。此外,这将导致一些安全问题,并要求在密钥管理上信任用户,这可能不是一个好主意。@FlorianCastelain IBM cloud不存储用户私钥,那么他们可以如何存储?您可以从IBM cloud检索标识私钥/公钥。例如,使用nodejs SDK,使用管理员标识并注册所需的标识。@FlorianCastelain yes当我注册所需的标识时,它将其私钥存储在msp/keystore/目录中。当我删除它时,事务抛出错误。我想实现的功能,让用户输入私钥,而交易或上传文件。请指导我如何做这件事?只需在前端上传一个文件并随您的请求一起发送即可?为此,我们将在其节点群上存储用户私钥,就像在我的场景中一样,每个用户都将被视为一个单独的组织,并向用户显示其交易是安全的,我希望用户在交易时上传私钥,因为此功能将帮助我进行营销,而且我的网络是封闭的网络。在你上次回复后,我也在想同样的事情,但非常感谢你宝贵的时间,兄弟。你做得很好。