Icinga PKI 代理-卫星-主站

Icinga PKI 代理-卫星-主站

根据文件https://icinga.com/docs/icinga2/latest/doc/06-distributed-monitoring/,Icinga 监控中的所有节点都需要一个位于主节点上的 CA。但我认为,我在这里错过了一些东西,因为代理通常只与卫星通信,而不与主节点通信,因此 TLS 可能不正确。

我有一个主节点、多个卫星节点和位于卫星节点后面的代理节点。主节点有一个 CA。卫星节点和 20 多个代理节点中的大多数都运行良好。我使用 Ansible 来管理所有安装和配置 - 因此配置与所有代理节点类似。此外,主节点是一个 docker 容器 - 但这不是问题。只有一个卫星节点上的单个代理节点有问题。也许这是第一次设置(没有卫星节点)的问题。我删除了代理节点上的所有 PKI 信息并重新启动。

我做了以下事情:

agent> icinga2 pki save-cert \
               --key agent.key --cert agent.crt \
               --trustedcert master.crt \
               --host ${masterhost} --port ${masterport}

我在 master 上创建了一张票

master> icinga2 icinga2 pki ticket --cn ${agent}

所以我拿到了代理票。

然后我申请了证书。

agent> icinga2 pki request \
               --host ${masterhost} --port ${masterport} \
               --ticket ${agentticket} \
               --key agent.key --cert agent.crt \
               --trustedcert master.crt --ca /etc/icinga2/pki/ca.key 

现在我认为,代理应该与主服务器通信。但它不应该与主服务器通信,而应该与卫星通信。

区域配置为:

/* Agent /etc/icinga2/zones.conf */

/* Define Monitoring Master Endpoint */
object Endpoint "satellite1.network" {
  host = "ip"
  port = "5665"
}

/* Define Monitoring Master Zone */
object Zone "satellite1.network" {
  endpoints = [ "satellite1.network" ]
}

/* Define Monitoring Agent Endpoint (this host) */
object Endpoint NodeName {
  host = NodeName
}

/* Define Monitoring Agent Zone */
object Zone ZoneName {
  endpoints = [ NodeName ]
  parent = "satellite1.network"
}

因此,代理不知道主服务器,它只与卫星主机通信。因此 - 卫星上会发生必须发生的事情。它忽略了代理,因为它不知道证书。

satellite> tail /var/log/icinga2/icinga2.log
...
... warning/ApiListener: Certificate validation failed for endpoint 'agent': code 18: self signed certificate
...

因此,我执行上述操作不是针对主服务器,而是针对卫星服务器(将主服务器替换为卫星主机)。但这会导致卫星服务器需要自己的 CA(手册中没有记录)。我可以创建一个。但这正确吗?

相关内容