本文为 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"
}
}