如何让用户在 hyperledger fabric 中的任何交易之前上传私钥文件?

how to make a user upload private key file before any transaction in hyperledger fabric?

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

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

  • 前端:允许用户上传文件(示例(假设您正在构建网络应用程序):http://reusableforms.com/d/o3/html5-contact-form-with-file-upload
  • 后端:从请求中检索文件。
  • 后端:从这些文件创建用户上下文
  • 后端:Build/send 事务
  • FABRIC:处理事务
  • BACK END:如果交易有效,删除所有关于用户的信息(特别是私钥)
  • 后端:将响应发送回前端

我不知道你的场景是什么,但是:

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

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

我觉得大家对keystore文件夹的作用和你想在这里完成的作用存在误解。

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

在对等点上,密钥库将存储对等点的证书和对等点身份的密钥。它不会存储任何其他身份的密钥,因为该节点并不意味着充当该身份(记住私有所有权 = 能够充当该身份)。它还将存储旨在充当该对等方管理员的身份的证书(不是私钥)。

您允许用户上传私钥到底是想做什么?如果您试图让用户向网络表明自己的身份,那么提供他们的密钥并不是解决方案。如果是其他问题,请尝试编辑您的 post 以更清楚地解释您的用例,以便我们提供帮助。