zoukankan      html  css  js  c++  java
  • Hyperledger Fabric使用硬件安全模块(HSM)

    使用硬件安全模型

    官方文档
    可以通过Fabric节点使用硬件安全模块(HSM)来产生和存储私钥。HSM用于保护私钥和处理加密操作。允许peer节点与orderer节点在不暴露他们的私钥的条件下去签名和背书交易,当前Fabric只支持使用PKCS11标准与HSM进行通信。

    配置HSM

    为了在Fabric节点上使用HSM,需要更新关于节点配置文件如core.yaml中的BCCSP(加密服务提供者)部分.在BCCSP部分,需要选择PKCS11作为提供者并提供需要使用的PKCS11库的路径。还需要提供为加密操作创建的令牌的标签和密码。可以使用令牌去生成和存储多个秘钥。
    预先构建的Hyperledger Fabric Docker镜像不能够使用PKCS11。如果使用Docker部署Fabric,需要通过以下的命令启动PKCS11构建自己的镜像。

    make docker GO_TAGS=pkcs11
    

    同时也需要确保PKCS11的库文件是有效的,挂载到容器内部或者通过节点安装后是可以使用的。

    示例

    接下来的示例说明了如何去配置一个可以使用HSMFabirc节点。

    首先,需要安装一个实现了PKCS11的接口。本例使用开源的softhsm实现。在下载和配置完成softhsm后,需要设置环境变量SOFTHSM2_CONF指向softhsm2配置文件。

    可以使用softhsm去创建用于处理关于Fabric节点在HSM插槽中用于加密操作令牌。在这个示例中,我们创建了一个标签为fabric,密码为71811222的令牌。在创建令牌完成之后,更新配置文件来使用PKCS11,并将令牌作为加密服务提供者。可以在下面发现关于BCCSP部分配置的例子:

    #############################################################################
    # BCCSP (区块链加密服务提供者) 部分,用于选择使用的已实现的加密库文件
    #############################################################################
    bccsp:
      default: PKCS11
      pkcs11:
        Library: /etc/hyperledger/fabric/libsofthsm2.so
        Pin: 71811222
        Label: fabric
        hash: SHA2
        security: 256
    

    也可以通过环境变量来覆盖配置文件中相关的字段。如果通过Fabric CA服务器连接到了HSM,则需要设置以下环境变量:

    FABRIC_CA_SERVER_BCCSP_DEFAULT=PKCS11
    FABRIC_CA_SERVER_BCCSP_PKCS11_LIBRARY=/etc/hyperledger/fabric/libsofthsm2.so
    FABRIC_CA_SERVER_BCCSP_PKCS11_PIN=71811222
    FABRIC_CA_SERVER_BCCSP_PKCS11_LABEL=fabric
    

    如果使用docker compose部署了节点,在构建完自己的镜像后,可以更新docker compose文件通过volumessofthsm库文件和配置文件挂载到容器中。例如,可以添加下面的环境和volumes变量到docker compose文件:

      environment:
         - SOFTHSM2_CONF=/etc/hyperledger/fabric/config.file
      volumes:
         - /home/softhsm/config.file:/etc/hyperledger/fabric/config.file
         - /usr/local/Cellar/softhsm/2.1.0/lib/softhsm/libsofthsm2.so:/etc/hyperledger/fabric/libsofthsm2.so
    

    配置使用HSM的网络

    如果使用HSM部署了Fabric节点,私钥将会在HSM内部生成而不是节点本地的MSP中的keystore文件夹内。MSP中的keystore文件夹将为空文件夹。另外,Fabric节点将使用关于signcerts文件夹内的签名证书的主题秘钥标识符去接收HSM中的私钥。这个创建MSP文件夹的过程将和之前不同,取决于自己使用的Fabric 证书认证中心。

    使用Fabric CA

    可以通过编辑相同的配置文件配置Fabric CA使peer节点或者是orderer节点使用HSM。因为可以使用Fabric CA内部的HSM来生成秘钥。通过下面的步骤将直接创建本地的MSP文件夹:

    1. 创建一个HSM令牌并将它指向Fabirc CA的配置文件。当Fabric CA服务启动时,将会在HSM中生成CA签名证书。如果不担心CA签名证书是否暴露,可以跳过该步骤。
    2. 使用Fabric CA客户端通过自己的CA去注册peer或者order节点身份。
    3. 编辑Fabric CA客户端配置文件或者是环境变量使用HSM作为加密服务提供者并再次登录获取节点的身份。登录命令将通过HSM生成私钥文件.
    4. 更新关于peer或者orderer节点的配置文件中的BCCSP部分使用PKCS11,并将令牌作为加密服务提供者。指向由Fabric CA客户端创建的MSP文件夹。一旦部署完成,peer节点或者orderer节点将可以通过由HSM提供保护的私钥文件签名和背书交易。

    通过自己的CA使用HSM

    如果使用自己的CA证书中心来部署Fabric组件,可以通过以下几步使用HSM:

    1. 配置自己的CA使用PKCS11创建令牌与HSM进行通信。然后使用自己的CA去为每一个节点生成私钥和签名证书。私钥由HSM内部进行生成。
    2. 使用CA去构建节点的MSP文件夹。将步骤一中生成的签名证书放入signcerts文件夹内。可以保持keystore文件夹为空。
    3. 更新关于peer或者orderer节点的配置文件中的BCCSP部分使用PKCS11,并将令牌作为加密服务提供者。指向由Fabric CA客户端创建的MSP文件夹。一旦部署完成,peer节点或者orderer节点将可以通过由HSM提供保护的私钥文件签名和背书交易。
  • 相关阅读:
    asp的多国语言构思
    制作IE和FF都支持的无限级关联菜单
    破解网络尖兵(真正对付限制ADSL路由共享的方法)
    Asp透过系统DSN链接mysql数据库
    找到了一首曾经很喜欢的老歌
    生意人应具备的性格
    简单的操作让你的迅雷变的清爽
    线路分流自动跳转代码
    通过regsvr32注册DLL可以解决的一些疑难杂症
    页面无刷新超时自动退出
  • 原文地址:https://www.cnblogs.com/cbkj-xd/p/12090174.html
Copyright © 2011-2022 走看看