CITA 的通訊加密

本文是【李先生帶你玩CITA】系列技術文章第三篇。做者 leeyr 來自於杭州溪塔科技的一名底層區塊鏈工程師,這周將和你們聊聊通訊加密內容,但願你們喜歡。關注公衆號:溪塔科技,回覆「交流羣」,加入到區塊鏈開源社區 CITAHub 你們庭中。
開源企業級區塊鏈內核 CITA 點贊地址:https://github.com/citahub/citanode

爲了客戶的數據安全,我強烈推薦你們在生產境中部署 CITA時,考慮使用 CITA 的通訊加密。那本週就和你們聊聊通訊加密。git

首先,從 CITA 的系統架構圖能夠看到,在 CITA 系統中,主要有兩部分是跨網絡的通訊: github

Screenshot%20from%202019-12-22%2018-22-30

  1. Application <-> RPC, 即應用與 RPC 的通訊。
  2. node <-> node,即 CITA 節點間的通訊。

下面分開講。安全

節點間通訊加密

能夠網絡抓包與分析工具 (我這裏使用 tcpdump 與 wireshark)先看一下,使用了通訊加密與不使用通訊加密的差異。網絡

Screenshot%20from%202019-12-22%2017-54-21

上圖是在節點間沒開啓通訊加密抓到的數據包,能夠看到,裏面的信息是明文,很容易被工具讀取並分析。
那接下來再看看開啓了通訊加密後,一樣相近的數據包是怎麼樣子:架構

Screenshot%20from%202019-12-22%2017-55-11

能夠看到,裏面的通訊信息通過了加密,抓包工具是不可讀取並分析裏面的數據的。app

如何開啓節點通訊加密

能夠在建立網絡 (create) 或添加節點 (append) 時傳入選項--enable_tls來開啓。如tcp

建立網絡:工具

$ bin/cita create --enable_tls --super_admin "0x37d1c7449bfe76fe9c445e626da06265e9377601" --nodes "127.0.0.1:4000,127.0.0.1:4001"

添加節點:區塊鏈

$ bin/cita append --chain_name test-chain --enable_tls --node "127.0.0.1:4004"

應用與 RPC 通訊加密

首先,也先看一下添加通訊加密與沒有通訊加密的狀況下的數據包狀況,你們有個直觀的感覺。

沒有通訊加密的數據包狀況:

Screenshot%20from%202019-12-22%2018-05-47

有通訊加密的數據包狀況:

Screenshot%20from%202019-12-22%2018-14-23

能夠看到,有通訊加密時的數據包徹底不可讀!

如何開啓應用與 RPC 間通訊加密

因爲 RPC 是 http 協議,因此只須要使用 Nginx 將 http 反向代理成 https 就能夠了。而後應用使用 https 與 RPC 進行加密通訊。

你們能夠看到,如今 CITA 的測試鏈 (訪問地址https://node.cryptape.com1) 訪問就是使用了這個技術進行通訊加密。

關於如何配置 Nginx ,網絡上有不少材料,在此不打算展開描述。

相關文章
相關標籤/搜索