本文为 SPIRE 官方文档 plugin_server_upstreamauthority_disk 的中文译本,以英文原文为准。
🔗 穿越源码分析:Server 详解 · UpstreamAuthority · 上游 CA 与无缝轮换
服务端插件:UpstreamAuthority "disk"
disk 插件从磁盘加载 CA 凭据,用它们为 server 的签名权威(signing authority)生成中间签名证书(intermediate signing certificate)。这些中间证书是针对由 ServerCA 插件生成的 CSR 签发(mint)的。
disk 插件会在每次 CSR 请求时重新加载 CA 凭据。如果凭据无法加载,则会使用此前加载的凭据。这带来两点好处:其一,它确保无需重启 spire-server 进程即可从磁盘加载新的 UpstreamAuthority,实现无缝轮换(seamless rotation);其二,它确保磁盘故障在所加载的 UpstreamAuthority 到期之前不会影响正在运行的 spire-server。
该插件接受以下配置项:
| 配置项 | 说明 |
|---|---|
| cert_file_path | 如果 SPIRE 使用自签名(self-signed)CA,cert_file_path 应指向一个 PEM 编码的单个证书,即上游 CA 证书。如果不是自签名,cert_file_path 应指向一个文件,该文件必须包含一条或多条证书,用于建立一条向上直到 bundle_file_path 中所定义根证书的有效证书链。 |
| key_file_path | "上游" CA 密钥文件的路径。密钥文件必须包含单个 PEM 编码的密钥。支持的密钥类型为 EC(ASN.1 或 PKCS8 编码)或 RSA(PKCS1 或 PKCS8 编码)。 |
| bundle_file_path | 如果 SPIRE 使用自签名 CA,bundle_file_path 可以不设置。如果不是自签名,则 bundle_file_path 应指向一个文件,该文件必须包含一条或多条表示上游根证书的证书,而 cert_file_path 处的文件包含一条或多条用于向上串联到 bundle_file_path 中根证书所需的证书(其中 cert_file_path 中的第一条证书是上游 CA 证书)。 |
disk 插件既能作为根 CA(root CA)运作,也能加入一个已有的 PKI。
当加入一个已有的 PKI 时,必须使用 bundle_file_path 选项显式设置该 PKI 的信任包(trust bundle);它必须包含所加入 PKI 的可信根证书,采用 PEM 格式。使用 bundle_file_path 选项时,cert_file_path 必须包含一条向上直到可信根的证书链,采用 PEM 格式。
当作为根 CA 运作时,信任包不被使用。cert_file_path 必须恰好包含一条自签名证书,key_file_path 必须包含该证书对应的密钥。
密钥文件必须包含单个 PEM 编码的密钥。支持的密钥类型为 EC(ASN.1 或 PKCS8 编码)或 RSA(PKCS1 或 PKCS8 编码)。
一份配置示例:
UpstreamAuthority "disk" {
plugin_data {
cert_file_path = "conf/server/dummy_upstream_ca.crt"
key_file_path = "conf/server/dummy_upstream_ca.key"
}
}