为了客户的数据安全,我强烈推荐大家在 生产境中部署 CITA 时,考虑使用 CITA 的通信加密。那本周就和大家聊聊通信加密。
首先,从 CITA 的系统架构图可以看到,在 CITA 系统中,主要有两部分是跨网络的通信:
- Application <-> RPC, 即应用与 RPC 的通信。
- node <-> node,即 CITA 节点间的通信。
下面分开讲。
节点间通信加密
可以网络抓包与分析工具 (我这里使用 tcpdump 与 wireshark)先看一下,使用了通信加密与不使用通信加密的差别。
上图是在节点间没开启通信加密抓到的数据包,可以看到,里面的信息是明文,很容易被工具读取并分析。
那接下来再看看开启了通信加密后,同样相近的数据包是怎么样子:
可以看到,里面的通信信息经过了加密,抓包工具是不可读取并分析里面的数据的。
如何开启节点通信加密
可以在创建网络 ( create
) 或添加节点 ( append
) 时传入选项 --enable_tls
来开启。如
创建网络:
$ 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 通信加密
首先,也先看一下添加通信加密与没有通信加密的情况下的数据包情况,大家有个直观的感受。
没有通信加密的数据包情况:
有通信加密的数据包情况:
可以看到,有通信加密时的数据包完全不可读!
如何开启应用与 RPC 间通信加密
由于 RPC 是 http 协议,所以只需要使用 Nginx 将 http 反向代理成 https 就可以了。然后应用使用 https 与 RPC 进行加密通信。
大家可以看到,现在 CITA 的测试链 (访问地址 https://node.cryptape.com) 访问就是使用了这个技术进行通信加密。
关于如何配置 Nginx ,网络上有很多材料,在此不打算展开描述。
上一篇 : 聊聊 CITA 节点那点事
下一篇 : Quota 与 Quota Limit