本文是【李先生帶你玩CITA】系列技術文章第三篇。做者 leeyr 來自於杭州溪塔科技的一名底層區塊鏈工程師,這周將和你們聊聊通訊加密內容,但願你們喜歡。關注公衆號:溪塔科技,回覆「交流羣」,加入到區塊鏈開源社區 CITAHub 你們庭中。
開源企業級區塊鏈內核 CITA 點贊地址:https://github.com/citahub/citanode
爲了客戶的數據安全,我強烈推薦你們在生產境中部署 CITA時,考慮使用 CITA 的通訊加密。那本週就和你們聊聊通訊加密。git
首先,從 CITA 的系統架構圖能夠看到,在 CITA 系統中,主要有兩部分是跨網絡的通訊: github
下面分開講。安全
能夠網絡抓包與分析工具 (我這裏使用 tcpdump 與 wireshark)先看一下,使用了通訊加密與不使用通訊加密的差異。網絡
上圖是在節點間沒開啓通訊加密抓到的數據包,能夠看到,裏面的信息是明文,很容易被工具讀取並分析。
那接下來再看看開啓了通訊加密後,一樣相近的數據包是怎麼樣子:架構
能夠看到,裏面的通訊信息通過了加密,抓包工具是不可讀取並分析裏面的數據的。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 是 http 協議,因此只須要使用 Nginx 將 http 反向代理成 https 就能夠了。而後應用使用 https 與 RPC 進行加密通訊。
你們能夠看到,如今 CITA 的測試鏈 (訪問地址https://node.cryptape.com1) 訪問就是使用了這個技術進行通訊加密。
關於如何配置 Nginx ,網絡上有不少材料,在此不打算展開描述。