使用硬件安全模型
官方文檔 能夠經過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
示例
接下來的示例說明了如何去配置一個可使用HSM
的Fabirc
節點。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
文件經過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
文件夾:spa
- 建立一個
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
提供保護的私鑰文件簽名和背書交易。