跳到主要内容
版本:V2.2.1

运行权限要求

clmBot 执行证书自动更新时,需要对目标证书文件进行读写,并在更新后重载或重启对应的中间件服务。本文说明各类中间件场景下推荐的最小权限配置。

信息

中间件 reload / restart 命令定义在 config.yamlservers[].after_script 字段中,用户可根据实际环境自行调整。clmBot 不要求以 rootAdministrator 等高权限账号长期运行。

最小权限原则

推荐使用专用系统账号(如 clmbot)运行 clmBot:

  • 只授予该账号读取 clmBot 配置、日志目录和目标证书安装点所需的权限。
  • 只对 clmBot 管理的证书文件、私钥文件及其所在目录授予写入权限。
  • 只允许执行确认过的中间件 reload / restart 命令,before_scriptafter_script 须经人工审计后逐条授权。

不推荐:

  • 让 clmBot 长期以 rootAdministrator 身份运行。
  • 将中间件配置目录、证书目录或系统服务控制权限整体开放给 clmBot。
  • bashpowershell.exesystemctl 授予无限制执行权限或 NOPASSWD: ALL

各中间件权限要求

中间件需要的权限after_script 示例
nginx证书(.crt)、CA 链(可选)、私钥(.key)文件及所在目录的读写权限,用于写入新证书并创建 .bak 备份nginx -t && nginx -s reload
ApacheSSLCertificateFileSSLCertificateChainFileSSLCertificateKeyFile 所在目录的读写权限systemctl restart httpd.servicesystemctl restart apache2.service
TomcatPEM 证书/私钥或 JKS keystore 文件及所在目录的读写权限JAVA_HOME + shutdown.sh + startup.sh
IIS由 clmBot 内置 PowerShell 脚本导入 PFX 并更新站点绑定,需要管理员权限;临时 PFX 文件的创建和清理无需配置,内置脚本自动处理
信息
  • 通过证书发现功能自动生成的脚本会使用命令的绝对路径(如 nginx 附带 -p-c 参数,systemctl 使用绝对路径),请以实际生成的 servers[].after_script 为准。
  • 若 Tomcat 由 systemd 管理,自动生成的脚本为 systemctl restart <tomcat 服务名> 而非 shutdown.sh / startup.sh

Linux sudoers 配置示例

以下示例仅表达授权粒度,实际路径请按目标主机调整。

nginx:

clmbot ALL=(root) NOPASSWD: /usr/sbin/nginx -t
clmbot ALL=(root) NOPASSWD: /usr/sbin/nginx -s reload

Apache:

clmbot ALL=(root) NOPASSWD: /bin/systemctl restart apache2.service

Tomcat:

clmbot ALL=(tomcat) NOPASSWD: /opt/apache-tomcat/bin/shutdown.sh
clmbot ALL=(tomcat) NOPASSWD: /opt/apache-tomcat/bin/startup.sh

证书目录权限示例

chown -R root:clmbot /etc/ssl/example
chmod 0750 /etc/ssl/example
chmod 0640 /etc/ssl/example/site.crt /etc/ssl/example/ca.crt
chmod 0640 /etc/ssl/example/site.key

如需允许 clmBot 写入和备份上述文件,可用 ACL 精确授权:

setfacl -m u:clmbot:rwx /etc/ssl/example
setfacl -m u:clmbot:rw- /etc/ssl/example/site.crt
setfacl -m u:clmbot:rw- /etc/ssl/example/site.key

上线前权限核对表

提示

部署 clmBot 前,建议逐项确认以下权限配置。

  • clmBot 是否使用专用账号运行,而非 root 或管理员。
  • config.yaml 是否仅允许必要账号读取和写入。
  • 每个 servers[].format 指向的证书文件是否只开放必要读写权限。
  • 证书文件所在目录是否允许创建和清理 .bak 备份文件。
  • before_scriptafter_script 是否已经人工审计。
  • sudoers 是否只包含精确命令,而不是 ALLbash 或完整 systemctl
  • nginx / Apache / Tomcat 的 reload 或 restart 权限是否只覆盖目标实例。
  • 服务模式(clm-bot server)监听地址和端口是否符合主机防火墙策略。