Skip to content

本文为 SPIRE 官方文档 plugin_agent_nodeattestor_x509pop 的中文译本,以英文原文为准。 🔗 穿越源码分析:Agent 详解 · NodeAttestor

Agent 插件:NodeAttestor "x509pop"

必须与服务端 x509pop 插件配合使用

x509pop 插件为通过带外(out-of-band)机制预置了 X.509 身份的节点提供认证数据,并响应由 Server 插件发起的、基于签名的持有证明(proof-of-possession)挑战。

服务端 x509pop 插件所生成的 SPIFFE ID 基于证书指纹(fingerprint),该指纹定义为身份证书 ASN.1 DER 编码的 SHA1 哈希值。该 SPIFFE ID 形如:

xml
spiffe://<trust_domain>/spire/agent/x509pop/<fingerprint>
配置项说明默认值
private_key_path私钥在磁盘上的路径(PEM 编码的 PKCS1 或 PKCS8)
certificate_path证书捆绑包(certificate bundle)在磁盘上的路径。该文件必须包含一个或多个 PEM 块,以身份证书开头,后跟链式信任(chain-of-trust)校验所需的任何中间证书。身份证书的 X509v3 KeyUsage 中必须包含 digitalSignature
intermediates_path可选。磁盘上一条中间证书链的路径。该文件必须包含一个或多个 PEM 块,对应链式信任校验所需的中间证书。如果 certificate_path 所指向的文件包含多于一张证书,则此证书链会被追加到其后。
spiffe_endpoint_socket设置后将使用 SPIFFE 工作负载 API(Workload API)端点来获取节点身份。需与 Server 节点认证器上的 mode=spiffe 设置配合使用。

一个示例配置:

hcl
    NodeAttestor "x509pop" {
        plugin_data {
            private_key_path = "/opt/spire/conf/agent/agent.key.pem"
            certificate_path = "/opt/spire/conf/agent/agent.crt.pem"
        }
    }