Zum Hauptinhalt springen

Erforderliche Ausführungsberechtigungen

Wenn clmBot eine automatische Zertifikatsverlängerung durchführt, muss es die Zielzertifikatsdateien lesen und schreiben und nach der Aktualisierung den entsprechenden Middleware-Dienst neu laden oder neu starten. Dieser Artikel beschreibt die empfohlene Mindestberechtigungskonfiguration für verschiedene Middleware-Szenarien.

Information

Die Middleware-reload / restart-Befehle sind im Feld servers[].after_script von config.yaml definiert und können vom Benutzer an die tatsächliche Umgebung angepasst werden. clmBot muss nicht dauerhaft mit einem Konto mit hohen Berechtigungen wie root oder Administrator ausgeführt werden.

Prinzip der minimalen Berechtigungen

Es wird empfohlen, clmBot mit einem dedizierten Systemkonto (z. B. clmbot) auszuführen:

  • Gewähren Sie diesem Konto nur die Berechtigungen, die zum Lesen der clmBot-Konfiguration, des Protokollverzeichnisses und des Zielzertifikats-Installationspunkts erforderlich sind.
  • Gewähren Sie Schreibberechtigungen nur für die von clmBot verwalteten Zertifikatsdateien, privaten Schlüsseldateien und die Verzeichnisse, in denen sie sich befinden.
  • Erlauben Sie nur die Ausführung bestätigter Middleware-reload / restart-Befehle. before_script und after_script müssen nach manueller Prüfung einzeln autorisiert werden.

Nicht empfohlen:

  • Lassen Sie clmBot langfristig mit der Identität root oder Administrator laufen.
  • Öffnen Sie das Middleware-Konfigurationsverzeichnis, das Zertifikatsverzeichnis oder die Kontrolle über Systemdienste vollständig für clmBot.
  • Gewähren Sie bash, powershell.exe, systemctl uneingeschränkte Ausführungsrechte oder NOPASSWD: ALL.

Berechtigungsanforderungen der einzelnen Middleware

MiddlewareErforderliche Berechtigungenafter_script-Beispiel
nginxLese-/Schreibrechte für die Zertifikatsdateien (.crt), die CA-Kette (optional) und den privaten Schlüssel (.key) sowie für deren Verzeichnisse, um neue Zertifikate zu schreiben und Backups unter .bak zu erstellennginx -t && nginx -s reload
ApacheLese-/Schreibberechtigungen für die Verzeichnisse, in denen sich SSLCertificateFile, SSLCertificateChainFile, SSLCertificateKeyFile befindensystemctl restart httpd.service oder systemctl restart apache2.service
TomcatLese-/Schreibberechtigungen für PEM-Zertifikat/privaten Schlüssel oder JKS-Keystore-Dateien und die Verzeichnisse, in denen sie sich befindenJAVA_HOME + shutdown.sh + startup.sh
IISDas integrierte PowerShell-Skript von clmBot importiert das PFX und aktualisiert die Site-Bindung, Administratorrechte erforderlich; Erstellung und Bereinigung temporärer PFX-DateienKeine Konfiguration erforderlich, das integrierte Skript übernimmt dies automatisch
Information
  • Die durch die Zertifikatserkennung automatisch generierten Skripte verwenden den absoluten Pfad der Befehle (z. B. nginx mit dem Parameter -p, -c, systemctl verwendet den absoluten Pfad). Bitte orientieren Sie sich an dem tatsächlich generierten servers[].after_script.
  • Wenn Tomcat von systemd verwaltet wird, ist das automatisch generierte Skript systemctl restart <tomcat 服务名> und nicht shutdown.sh / startup.sh.

Linux sudoers-Konfigurationsbeispiel

Die folgenden Beispiele dienen nur zur Veranschaulichung der Autorisierungsgranularität. Passen Sie die tatsächlichen Pfade bitte an den Zielhost an.

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

Beispiel für Berechtigungen im Zertifikatsverzeichnis

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

Falls clmBot die oben genannten Dateien schreiben und sichern soll, kann dies mithilfe von ACL präzise autorisiert werden:

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

Checkliste der Berechtigungen vor dem Go-Live

Hinweis

Vor der Bereitstellung von clmBot wird empfohlen, die folgenden Berechtigungskonfigurationen Punkt für Punkt zu überprüfen.

  • Wird clmBot mit einem dedizierten Konto ausgeführt und nicht mit root oder einem Administrator?
  • Erlaubt config.yaml nur den erforderlichen Konten das Lesen und Schreiben?
  • Wird für die Zertifikatsdatei, auf die jeder servers[].format verweist, nur der erforderliche Lese- und Schreibzugriff freigegeben?
  • Erlaubt das Verzeichnis der Zertifikatsdateien das Erstellen und Bereinigen von .bak-Backup-Dateien?
  • Wurden before_script und after_script bereits manuell geprüft?
  • sudoers enthält nur exakte Befehle, nicht ALL, bash oder vollständige systemctl.
  • Die Reload- oder Restart-Berechtigungen für nginx / Apache / Tomcat decken nur die Zielinstanz ab.
  • Die Überwachungsadresse und der Port im Dienstmodus (clm-bot server) entsprechen der Firewall-Richtlinie des Hosts.