Hyperledger Fabric使用硬件安全模塊(HSM)

使用硬件安全模型

官方文檔 能夠經過Fabric節點使用硬件安全模塊(HSM)來產生和存儲私鑰。HSM用於保護私鑰和處理加密操做。容許peer節點與orderer節點在不暴露他們的私鑰的條件下去簽名和背書交易,當前Fabric只支持使用PKCS11標準與HSM進行通訊。html

配置HSM

爲了在Fabric節點上使用HSM,須要更新關於節點配置文件如core.yaml中的BCCSP(加密服務提供者)部分.在BCCSP部分,須要選擇PKCS11做爲提供者並提供須要使用的PKCS11庫的路徑。還須要提供爲加密操做建立的令牌的標籤和密碼。可使用令牌去生成和存儲多個祕鑰。 預先構建的Hyperledger Fabric Docker鏡像不可以使用PKCS11。若是使用Docker部署Fabric,須要經過如下的命令啓動PKCS11構建本身的鏡像。git

make docker GO_TAGS=pkcs11

同時也須要確保PKCS11的庫文件是有效的,掛載到容器內部或者經過節點安裝後是可使用的。github

示例

接下來的示例說明了如何去配置一個可使用HSMFabirc節點。docker

首先,須要安裝一個實現了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文件夾:spa

  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提供保護的私鑰文件簽名和背書交易。
相關文章
相關標籤/搜索