八卦加密不能正常工作

时间:2016-05-05 16:24:25

标签: consul

我使用以下命令创建了一个主令牌:

$ consul keygen
G74SM8N9NUc4meaHfA7CFg==

然后,我使用以下config.json

引导服务器
{
  "server": true,
  "datacenter": "consul",
  "data_dir": "/var/consul",
  "log_level": "INFO",
  "enable_syslog": true,
  "disable_update_check": true,
  "client_addr": "0.0.0.0",
  "bootstrap": true,
  "leave_on_terminate": true,
  "encrypt": "G74SM8N9NUc4meaHfA7CFg=="
}

引导服务器的输出如下:

     Node name: 'abcd'
    Datacenter: 'consul'
        Server: true (bootstrap: true)
   Client Addr: 0.0.0.0 (HTTP: 8500, HTTPS: -1, DNS: 8600, RPC: 8400)
  Cluster Addr: x.x.x.x (LAN: 8301, WAN: 8302)
Gossip encrypt: true, RPC-TLS: false, TLS-Incoming: false
         Atlas: <disabled>

然后,我添加了一个新服务器作为常规的consul服务器,其中包含以下config.json

{
      "server": true,
      "datacenter": "consul",
      "data_dir": "/var/consul",
      "log_level": "INFO",
      "enable_syslog": true,
      "disable_update_check": true,
      "client_addr": "0.0.0.0",
      "bootstrap": false,
      "leave_on_terminate": true,
      "ui_dir": "/usr/local/bin/consul_ui",
      "check_update_interval": "0s",
      "ports": {
        "dns": 8600,
        "http": 8500,
        "https": 8700,
        "rpc": 8400,
        "serf_lan": 8301,
        "serf_wan": 8302,
        "server": 8300
      },
      "dns_config": {
        "allow_stale": true,
        "enable_truncate": true,
        "only_passing": true,
        "max_stale": "02s",
        "node_ttl": "30s",
        "service_ttl": {
          "*": "10s"
        }
      },
      "advertise_addr": "y.y.y.y",
      "encrypt": "G74SM8N9NUc4meaHfA7CFg==",
      "retry_join": [
        "x.x.x.x",
        "y.y.y.y"
      ]
    }

注意:此处,x.x.x.x是引导服务器的IP地址,y.y.y.y是常规服务器的IP地址。

出于测试目的,我更改了其中一台服务器上的加密密钥。而且,当我consul members时,我仍然可以看到所有IP,这意味着即使使用不同的加密密钥,服务器仍然能够进行通信。似乎八卦加密工作不正常。

1 个答案:

答案 0 :(得分:1)

Consul实例将缓存初始密钥并重新使用它。它存储在文件serf中的local.keyring文件夹中。

这是违反直觉的,但它是documented at least in one place together with the encrypt option

您需要删除此文件并重新启动Consul才能获得预期的行为。