是否可以在基于策略的自动签名期间检索客户端 IP 地址

Is it possible to retrieve the clients IP address during policy-based autosigning

我想使用基于策略的自动签名。为了确保请求有效,我想知道客户端从哪个 IP 地址连接并请求证书。如果 CN 和 IP 地址与我的 CMDB 匹配,我想自动签署请求。

我阅读了文档,但似乎没有提供 IP 地址。是否有任何解决方法来获取请求客户端的 IP 地址?

I read the docs but it seems the IP address is not provided.

这或多或少是正确的。文档详细信息 the interface and expectations for policy executables。证书名称作为程序参数提供,而 PEM 形式的 CSR 在程序的标准输入中提供。 Puppet 没有提供其他任何东西,Puppet 也没有提供任何其他东西,因为请求证书通常是代理人和主人之间的第一次互动。

Are there any workarounds to get the IP address of the requesting client?

如果您使用主机名作为证书名(默认),或者有其他方式获取主机名,那么您可以尝试 DNS 查找。或者在某些情况下,您可能能够从 DHCP 服务器、NIS 服务器或其他类似系统获取信息。或者,您可以使用不同的 属性 作为证书名称,您可以为其执行适当的查找——例如,可能是资产编号。

此外,您应该能够让客户端以 certificate extension 的形式包含其 IP 号码,然后策略可执行文件应该能够从 CSR 中提取该 IP 号码。但请注意,如果随后对 CSR 进行了签名,则该特定 IP 将永久包含在生成的证书中,无论您是否出于任何其他目的需要它,也无论后续 IP 号码是否发生变化。