我们这里以官方文档+单群组+四节点+单机构+单机为例
这里已经搭建好了环境
目的:将node0设为拒绝连接,并拉入黑名单
一、获取目标节点的node.id
这里使用cat命令查看node.id;该文件一般位于:node*/conf/node.nodeid
cat node0/conf/node.nodeid
1、黑白名单原理及名词解释等
解释及原理:
CA黑名单
-
别称证书拒绝列表(certificate blacklist,简称CBL)。CA黑名单基于
config.ini
文件中[certificate_blacklist]
配置的NodeID进行判断,拒绝此NodeID节点发起的连接。
CA白名单
-
别称证书接受列表(certificate whitelist,简称CAL)。CA白名单基于
config.ini
文件中[certificate_whitelist]
配置的NodeID进行判断,拒绝除白名单外所有节点发起的连接。
拒绝逻辑
-
黑名单:拒绝写在黑名单中的节点连接
-
白名单:拒绝所有未配置在白名单中的节点连接。白名单为空表示不开启,接受任何连接。
优先级
黑名单的优先级高于白名单。例如,白名单里配置了A,B,C,会拒绝掉D的连接,若黑名单里同时配了A,则A也会被拒绝连接。
二、文件配置格式
黑名单
节点config.ini
配置中增加[certificate_blacklist]
路径([certificate_blacklist]
在配置中可选)。CA黑名单内容为节点NodeID列表,crl.X为本节点拒绝连接的对方节点NodeID。CA黑名单的配置格式示例如下
[certificate_blacklist]
crl.0=4d9752efbb1de1253d1d463a934d34230398e787b3112805728525ed5b9d2ba29e4ad92c6fcde5156ede8baa5aca372a209f94dc8f283c8a4fa63e3787c338a4
crl.1=af57c506be9ae60df8a4a16823fa948a68550a9b6a5624df44afcd3f75ce3afc6bb1416bcb7018e1a22c5ecbd016a80ffa57b4a73adc1aeaff4508666c9b633a
白名单
节点config.ini
配置中增加[certificate_whitelist]
路径([certificate_whitelist]
在配置中可选)。CA白名单内容为节点NodeID列表,cal.X为本节点可接受连接的对方节点NodeID。CA白名单的配置格式示例如下。
[certificate_whitelist]
cal.0=4d9752efbb1de1253d1d463a934d34230398e787b3112805728525ed5b9d2ba29e4ad92c6fcde5156ede8baa5aca372a209f94dc8f283c8a4fa63e3787c338a4
cal.1=af57c506be9ae60df8a4a16823fa948a68550a9b6a5624df44afcd3f75ce3afc6bb1416bcb7018e1a22c5ecbd016a80ffa57b4a73adc1aeaff4508666c9b633a
重启节点生效
bash stop.sh && bash start.sh
查看节点连接
curl -X POST --data '{"jsonrpc":"2.0","method":"getPeers","params":[1],"id":1}' http://127.0.0.1:8545 |jq
注:第一次使用该命令有可能缺失jq工具,使用以下方式获取jq:
#这将安装最新版的jq工具
apt install jq
在配置完黑白名单后使用命令查看节点连接情况:
可看到只与两个节点建立的连接,未与node1建立连接