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 ,网络上有不少材料,在此不打算展开描述。

相关文章
相关标签/搜索