是否可以在 Hyperledger Fabric 中从 HSM 管理 TLS 证书?

问题描述

我在 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,然后就可以了。