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.
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_scriptundafter_scriptmüssen nach manueller Prüfung einzeln autorisiert werden.
Nicht empfohlen:
- Lassen Sie clmBot langfristig mit der Identität
rootoderAdministratorlaufen. - Öffnen Sie das Middleware-Konfigurationsverzeichnis, das Zertifikatsverzeichnis oder die Kontrolle über Systemdienste vollständig für clmBot.
- Gewähren Sie
bash,powershell.exe,systemctluneingeschränkte Ausführungsrechte oderNOPASSWD: ALL.
Berechtigungsanforderungen der einzelnen Middleware
| Middleware | Erforderliche Berechtigungen | after_script-Beispiel |
|---|---|---|
| nginx | Lese-/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 erstellen | nginx -t && nginx -s reload |
| Apache | Lese-/Schreibberechtigungen für die Verzeichnisse, in denen sich SSLCertificateFile, SSLCertificateChainFile, SSLCertificateKeyFile befinden | systemctl restart httpd.service oder systemctl restart apache2.service |
| Tomcat | Lese-/Schreibberechtigungen für PEM-Zertifikat/privaten Schlüssel oder JKS-Keystore-Dateien und die Verzeichnisse, in denen sie sich befinden | JAVA_HOME + shutdown.sh + startup.sh |
| IIS | Das integrierte PowerShell-Skript von clmBot importiert das PFX und aktualisiert die Site-Bindung, Administratorrechte erforderlich; Erstellung und Bereinigung temporärer PFX-Dateien | Keine Konfiguration erforderlich, das integrierte Skript übernimmt dies automatisch |
- Die durch die Zertifikatserkennung automatisch generierten Skripte verwenden den absoluten Pfad der Befehle (z. B. nginx mit dem Parameter
-p,-c,systemctlverwendet den absoluten Pfad). Bitte orientieren Sie sich an dem tatsächlich generiertenservers[].after_script. - Wenn Tomcat von systemd verwaltet wird, ist das automatisch generierte Skript
systemctl restart <tomcat 服务名>und nichtshutdown.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
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
rootoder einem Administrator? - Erlaubt
config.yamlnur den erforderlichen Konten das Lesen und Schreiben? - Wird für die Zertifikatsdatei, auf die jeder
servers[].formatverweist, nur der erforderliche Lese- und Schreibzugriff freigegeben? - Erlaubt das Verzeichnis der Zertifikatsdateien das Erstellen und Bereinigen von
.bak-Backup-Dateien? - Wurden
before_scriptundafter_scriptbereits manuell geprüft? - sudoers enthält nur exakte Befehle, nicht
ALL,bashoder vollständigesystemctl. - 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.