问题描述
我在 Hyperledger Fabric 中有一个应用程序,我想使用 HSM 来存储我的私钥,我认为将它用于身份密钥对没有任何问题,但是当涉及到 TLS 密钥对时,我发现以下问题:
-
在对等节点中,我需要设置 CORE_PEER_TLS_KEY_FILE 配置值以使 TLS 通信正常工作。
-
在订购者中,我需要设置 ORDERER_GENERAL_TLS_PRIVATEKEY 配置值以使 TLS 通信正常工作。
-
在创建网关的客户端中,我需要传递私钥才能使用以下代码建立 TLS 通信:
const gateway = new Gateway(); const ccpPath = path.resolve(this.ccpPath); await gateway.connect(ccpPath,{ wallet:this.wallet,identity: userId,discovery: { enabled: true,asLocalhost: this.asLocalhost } }); const client = gateway.getClient(); client.setTlsClientCertAndKey(identityTLS.certificate,identityTLS.privateKey);
因此,对于我所看到的,这是不可能的,我需要使用 2 个不同的钱包来存储身份和 TLS 证书,我是否遗漏了什么?或者是否有可能在 HSM 中也有 TLS 私钥?
谢谢!
解决方法
这不可能。不可能的原因是 Fabric 中的 TLS 堆栈不与 BCCSP 接口,BCCSP 是管理 Fabric 中 HSM 的组件。
但是,可以通过一些代码更改。所需要做的就是将 TLS 堆栈连接到 BCCSP,然后就可以了。