本文是【李先生带你玩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 ,网络上有不少材料,在此不打算展开描述。