天天看點

Hyperledger Fabric如何啟用雙向TLS?

Hyperleder Fabric區塊鍊支援在通信節點之間啟用TLS傳輸層安全通信,TLS支援單向驗證 - 僅驗證服務節點身份,或雙向驗證 - 同時驗證服務節點和用戶端節點的身份。本文将介紹如何在Hyperledger Fabric網絡中啟用雙向TLS安全通信。

Hyperledger Fabric鍊碼與應用開發相關教程:

1、TLS基本概念

TLS(Transport Layer Security),即傳輸層安全協定,用于在兩個通信節點之間提供保密性和資料完整性,這是通過采用X.509證書進行身份驗證并生成會話密鑰來實作的。

當一個節點A需要向另一個節點B發送消息時,需要滿足以下條件才能保證資料完整性和安全性:

  • 身份确認:B應當可以确認消息來自A而不是C或D
  • 資料加密:A以加密方式向B發送消息

服務節點會發送其X.509證書(及任何中間級CA憑證)給用戶端,用戶端使用其信任的某個根證書驗證服務節點的身份。絕大多數用戶端使用Microsoft或Mozilla提供的可信根證書集。在此過程結束後,用戶端就可以确認服務節點的真實身份。

TLS應用非常廣泛,例如,我們在使用浏覽器通路https開頭的網址時,就是在使用TLS,TLS可以保證通信雙方身份的确認并且建立一個雙向的加密信道。

TLS不僅支援用戶端對服務節點的身份驗證,同時也可以支援服務節點來驗證用戶端的身份,這就是我們所說的雙向TLS身份驗證,在P2P通信環境中,雙向TLS身份驗證尤為必要:

Hyperledger Fabric如何啟用雙向TLS?

2、為Orderer或Peer啟用TLS雙向身份驗證

那麼我們如何在Hyperledger Fabric中啟用雙向TLS?

排序節點(Orderer)要啟用對用戶端的身份驗證,需要設定如下環境變量:

Hyperledger Fabric如何啟用雙向TLS?

對等節點(Peer)要啟用對用戶端的身份驗證,需要設定如下環境變量:

Hyperledger Fabric如何啟用雙向TLS?

3、TLS連接配接Orderer或Peer的Node.js代碼

用收到的用戶端證書和密鑰設定Client執行個體,該執行個體将會使用這些密碼學資料來送出給orderer和peer。

例如,下面的Node.js代碼展示了如何設定client執行個體的TLS密碼學資料,然後如何建立啟用TLS雙向認證的orderer和peer執行個體。我們假設client的PEM編碼的TLS密鑰和證書的路徑分别是

somepath/tls/client.key

somepath/tls/client.crt

Hyperledger Fabric如何啟用雙向TLS?

如果出現驗證問題,你會看到如下的錯誤資訊:

E0923 16:30:14.963494564 31166 ssl_transport_security.cc:188] ssl_info_callback: error occured.

E0923 16:30:14.963567129 31166 ssl_transport_security.cc:989] Handshake failed with fatal error SSL_ERROR_SSL: error:14094412:SSL routines:ssl3_read_bytes:sslv3 alert bad certificate.
E0923 16:30:15.964456710 31166 ssl_transport_security.cc:188] ssl_info_callback: error occured.           

原文連結:

Hyperledger Fabric雙向TLS配置與連接配接方法 - 彙智網