使用硬件安全模型
官方文檔
可以通過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
的庫文件是有效的,掛載到容器內部或者通過節點安裝后是可以使用的。
示例
接下來的示例說明了如何去配置一個可以使用HSM
的Fabirc
節點。
首先,需要安裝一個實現了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
文件通過volumes
將softhsm
庫文件和配置文件掛載到容器中。例如,可以添加下面的環境和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
文件夾:
- 創建一個
HSM
令牌並將它指向Fabirc CA
的配置文件。當Fabric CA
服務啟動時,將會在HSM
中生成CA
簽名證書。如果不擔心CA
簽名證書是否暴露,可以跳過該步驟。 - 使用
Fabric CA
客戶端通過自己的CA
去注冊peer
或者order
節點身份。 - 編輯
Fabric CA
客戶端配置文件或者是環境變量使用HSM
作為加密服務提供者並再次登錄獲取節點的身份。登錄命令將通過HSM
生成私鑰文件. - 更新關於
peer
或者orderer
節點的配置文件中的BCCSP
部分使用PKCS11
,並將令牌作為加密服務提供者。指向由Fabric CA
客戶端創建的MSP
文件夾。一旦部署完成,peer
節點或者orderer
節點將可以通過由HSM
提供保護的私鑰文件簽名和背書交易。
通過自己的CA
使用HSM
如果使用自己的CA
證書中心來部署Fabric
組件,可以通過以下幾步使用HSM
:
- 配置自己的
CA
使用PKCS11
創建令牌與HSM
進行通信。然后使用自己的CA
去為每一個節點生成私鑰和簽名證書。私鑰由HSM
內部進行生成。 - 使用
CA
去構建節點的MSP
文件夾。將步驟一中生成的簽名證書放入signcerts
文件夾內。可以保持keystore
文件夾為空。 - 更新關於
peer
或者orderer
節點的配置文件中的BCCSP
部分使用PKCS11
,並將令牌作為加密服務提供者。指向由Fabric CA
客戶端創建的MSP
文件夾。一旦部署完成,peer
節點或者orderer
節點將可以通過由HSM
提供保護的私鑰文件簽名和背書交易。