Fabric系列 - HSM之3 区块链上的结合

张开发
2026/6/8 12:13:08 15 分钟阅读
Fabric系列 - HSM之3 区块链上的结合
长安链: Cryptogen层支持HSM参考https://docs.chainmaker.org.cn/operation/%E7%A1%AC%E4%BB%B6%E5%8A%A0%E5%AF%86.htmlhttps://docs.chainmaker.org.cn/tech/%E7%A1%AC%E4%BB%B6%E5%8A%A0%E5%AF%86.html测试网络部署架构:首先在密码设备创建CA根私钥、sdk用户私钥以及节点共识私钥。通过chainmaker-cryptogen工具以下统称cryptogen的generate命令一键生成测试网络证书。使用密码机节点私钥和cryptogen生成的节点证书启动chainmaker区块链网络sdk使用密码机用户私钥进行签名并将交易发送给chainmaker网络chainmaker网络节点使用用户证书对交易进行验签名并执行交易推荐部署架构CA使用单独密码设备客户端SDK使用单独密码设备节点使用一台或多台密码设别根据组织结构和节点部署情况而定Fabric: 使用Fabric Ca Server参考Thales LUNA:https://cpl.thalesgroup.com/sites/default/files/content/integration_guides/field_document/2020-06/007-000084-001_BlockChain_Hyperledger_Integration Guide_RevD.pdfhttps://cpl.thalesgroup.com/sites/default/files/content/integration_guides/field_document/2021-03/BlockChain_Hyperledger_LunaHSM_Integration%20Guide_RevE.pdfMsp目录可以用Fabric提供的cryptogen命令生成但是用cryptogen命令生成是非常不灵活的生产环境中应当使用Fabric提供的另一个组件FabricCA。Fabric ca已支持使用HSM, 由它产生的证书配到peer|orderer下Fabric根CA模式使用HSM, 如下图: (此文档都是针对这个应用场景)安装Golang, 编译fabric-ca-server和fabric-ca-client项目:(0) 安装Go语言编译环境(1) 下载测试项目fabric-basic-network(2) fabric-ca-server 体验hsm(3) fabric-ca-client 体验hsmcd fabric-ca-client创建 orderer 和 org 使用的 hsm slot# softhsm中的创建命令 (slot index 与我的不一样没关系)softhsm2-util --init-token--slot0--labelfabric#已在上一步fabric-ca-server时创建过了softhsm2-util --init-token--slot1--labelorderer.example.comsofthsm2-util --init-token--slot2--labelorg1.example.com#查看softhsm2-util --show-slots#删除#softhsm2-util --delete-token --serial xxxx向 ca-server 申请证书,并存入ca-client使用的hsm中#运行前先确认 fabric-ca-server是否开着cdnative ./gencerts.sh注意gencerts.sh脚本内与 hsm 相关的配置BCCSP_DEFAULTPKCS11#FIXME: PKCS11 | SWPIN222222# hsm的user pinLIB/usr/local/lib/softhsm/libsofthsm2.so#hsm的so库脚本内申请证书相关的方法genmsp参数说明ORG_DIR$1ORG_NAME$2NODE_DIR$3NODE_NAME$4LABEL$5#hsm的lable, org${org}.example.com 和 orderer.example.comNODE_OU$6BCCSP_SWITCH$7#SW表示存本地, PKCS11表示存HSM内#使用方法## org1的peer0证书genmsp peerOrganizations org${org}.example.com peers peer${peer}.org${org}.example.com peer SW## org1的Admin证书genmsp peerOrganizations org${org}.example.comusersAdmin org${org}.example.com admin SW## ordererOrg的orderer证书genmsp ordererOrganizations example.com orderers orderer. orderer.example.com orderer$BCCSP_DEFAULT## ordererOrg的Admin证书genmsp ordererOrganizations example.com orderers orderer2. orderer.example.com orderer$BCCSP_DEFAULT运行成功,证书将会生成在此目录下crypto-configtree-L1-dcrypto-config crypto-config ├── ordererOrganizations#orderer相关├── peerOrganizations#org peer相关└── register#ca登记员相关(ca-client自己使用)在Fabric各组件上使用HSM下载Fabric项目gitclone https://github.com/hyperledger/fabric.gitgitcheckout v2.2.1编译命令# 各组件分别编译 (输出文件在 .build/bin 目录下)makecryptogenmakeconfigtxgenmakeorderermakepeer# or 编译所有组件makenative# 各组件分别生成 docker imagemakeorderer-dockermakepeer-dockermaketools-docker# or 生成所有 docker imagemakedocker# 查看makedocker-list# native docker checksmakeall编译Fabric的docker imagemakedockerGO_TAGSpkcs11Orderer 体验hsm配置文件说明3-orgs/multi-orderers-multi-orgs-no-ca/0.bootOrderer/docker-compose.yamlservices:orderer.example.com:environment:#添加环境变量-ORDERER_GENERAL_BCCSP_DEFAULTPKCS11-ORDERER_GENERAL_BCCSP_PKCS11_LIBRARY/usr/local/lib/softhsm/libsofthsm2.so-ORDERER_GENERAL_BCCSP_PKCS11_PIN222222-ORDERER_GENERAL_BCCSP_PKCS11_LABELorderer.example.com-ORDERER_GENERAL_BCCSP_PKCS11_HASHSHA2-ORDERER_GENERAL_BCCSP_PKCS11_SECURITY256#softhsm 相关-SOFTHSM2_CONF/etc/softhsm2.confvolumes:#添加映射文件#softhsm 相关-/etc/softhsm2.conf:/etc/softhsm2.conf-/var/lib/softhsm/tokens/:/var/lib/softhsm/tokens/-/usr/local/lib/softhsm/libsofthsm2.so:/usr/local/lib/softhsm/libsofthsm2.so#使用基于fabric-ca-hsm镜像制作的image的话, 这个文件不用映射test hsm in orderer#部署一个orderermakeORGNUM1MAJORITY0USE_CRYPTOGEN0boot_orderer#部署一个peer和一个应用通道makeORGNUM1MAJORITY0USE_CRYPTOGEN0boot_org1#添加一个orderermakeORGNUM1MAJORITY0USE_CRYPTOGEN0add_1orderer#参数说明# ORGNUM: peer组织总数# MAJORITY: 1表示使用需要绝大多数同意的策略; 0表示使用单个组织同意的策略# USE_CRYPTOGEN: 1表示用cryptogen重新生成msp; 0表示拷取fabric-ca-client生成好的msporderer都能正常运转的话,我认为orderer上配置HSM算是成功了结论主机上能成功使用HSM的组件Fabric-ca-serverFabric-ca-client容器化后能成功使用HSM的组件(需要将softhsm能力做进image中)Fabric-ca-serverOrderer往期精彩回顾:区块链知识系列密码学系列零知识证明系列共识系列公链调研系列BTC系列以太坊系列EOS系列Filecoin系列联盟链系列Fabric系列智能合约系列Token系列

更多文章