Konfigurationsreferenz
Das Verhalten von clmBot wird durch die Konfigurationsdatei config.yaml im Installationsverzeichnis gesteuert. Diese Datei wird bei der Ausführung von login, discover-certificate oder add-server automatisch generiert und kann auch manuell bearbeitet werden.
Standardmäßig liest clmBot config.yaml aus dem aktuellen Verzeichnis. Der Pfad zur Konfigurationsdatei kann auch über den globalen Parameter -c angegeben werden:
./clm-bot-linux-amd64 -c /opt/clm-bot/config.yaml update-certificate
Gesamtstruktur
app:
base_url: https://<云端地址>
ignore_ssl: false
access_key: YOUR_ACCESS_KEY
access_secret: YOUR_ACCESS_SECRET
servers:
- id: nginx_pem
sub_code: <证书订阅号>
format:
pem:
cert_path: /etc/nginx/ssl/example.com.crt
ca_path: /etc/nginx/ssl/example.com.ca.crt
key_path: /etc/nginx/ssl/example.com.key
before_script: |
...
after_script: |
nginx -t && nginx -s reload
App: Zugangskonfiguration
| Feld | Beschreibung |
|---|---|
base_url | Cloud-API-Adresse, gemäß den Bereitstellungsinformationen ausfüllen; in der Regel keine Änderung erforderlich |
ignore_ssl | Gibt an, ob die HTTPS-Zertifikatsprüfung ignoriert werden soll. Nur in kontrollierten Umgebungen mit selbstsignierten Zertifikaten aktivieren |
access_key | Von der Cloud zugewiesener AccessKey |
access_secret | Von der Cloud zugewiesenes AccessSecret. Nachdem der Klartext erstmals vom Programm gespeichert wurde, wird er automatisch in einen verschlüsselten Wert mit dem Präfix ENC1+ migriert |
Servers: Liste der Installationspunkte
Jeder servers[]-Eintrag entspricht einem Zertifikatsinstallationspunkt:
| Feld | Beschreibung |
|---|---|
id | Kennung des Installationspunkts; es wird ein Name mit geschäftlicher Bedeutung empfohlen |
sub_code | Zertifikatsabonnementnummer, die dem Zertifikatsabonnement in der Verwaltungskonsole entspricht; clmBot bezieht darüber das neueste Zertifikat |
format | Zertifikatsformat und Dateipfad, es darf nur einer der folgenden Werte beibehalten werden: pem, pfx, jks, iis, exchange |
before_script | Skript, das vor der Aktualisierung ausgeführt wird; schlägt das Skript fehl, wird die Aktualisierung des aktuellen Installationspunkts abgebrochen |
after_script | Skript, das nach der Aktualisierung ausgeführt wird und üblicherweise zum Neuladen des Middleware-Dienstes dient |
format: Zertifikatsformat
pem
Geeignet für Szenarien, in denen PEM-Dateien verwendet werden, z. B. nginx, Apache HTTP Server, Tomcat:
| Feld | Beschreibung |
|---|---|
cert_path | Pfad zur Standortzertifikatsdatei. Bei Aktualisierung wird das Blattzertifikat geschrieben; ist ca_path leer, wird zugleich die vollständige Zertifikatskette geschrieben |
ca_path | Pfad zur CA-Kettendatei, kann leer sein |
key_path | Pfad zur Private-Key-Datei |
pfx
Geeignet für Dienste, die ein einzelnes Zertifikatspaket (PKCS#12) benötigen:
| Feld | Beschreibung |
|---|---|
path | Pfad zur PFX-Datei |
key_pass | PFX-Passwort für den privaten Schlüssel; kann leer bleiben, wenn der Zieldienst kein Passwort verlangt |
jks
Geeignet für Java-Keystore-Szenarien wie Tomcat:
| Feld | Beschreibung |
|---|---|
path | Pfad zur JKS-Datei |
alias | Alias des Zertifikatseintrags. Wenn leer, kann er nur dann automatisch abgeleitet werden, wenn der Keystore genau einen Eintrag enthält |
key_pass | Passwort des Eintrags-Privatschlüssels |
store_pass | Keystore-Passwort |
iis
Geeignet für Windows IIS-HTTPS-Bindungen:
| Feld | Beschreibung |
|---|---|
name | IIS-Websitename, einsehbar im IIS-Manager |
addr | IP der HTTPS-Bindung, * bedeutet alle IPs |
port | Port der HTTPS-Bindung |
domain | Domäne der HTTPS-Bindung, kann bei fehlender SNI-Domäne leer bleiben |
Der IIS-Installationspunkt führt den Zertifikatsimport und die Bindungserneuerung automatisch über das integrierte clmBot-Skript aus; in der Regel ist keine Skriptkonfiguration erforderlich.
exchange
Geeignet für Windows Exchange-Dienstzertifikate:
| Feld | Beschreibung |
|---|---|
services | Liste der Exchange-Dienstnamen, für die das neue Zertifikat aktiviert werden soll, z. B. ["IIS", "SMTP", "POP", "IMAP"] |
Hinweise zur Skriptausführung
before_script und after_script werden bei der Zertifikatserneuerung in folgender Reihenfolge ausgeführt:
- Lokale Zertifikatsdateien sichern (es wird eine
.bak-Sicherung mit Zeitstempel erzeugt). before_scriptausführen; schlägt dies fehl, wird die Aktualisierung des aktuellen Installationspunkts abgebrochen.- Neues Zertifikat schreiben.
after_scriptausführen, um den Middleware-Dienst neu zu laden oder neu zu starten.
Wenn das lokale Zertifikat bereits aktuell ist, wird die gesamte Aktualisierung (einschließlich Skript) übersprungen; falls eine erzwungene Ausführung erforderlich ist after_script, kann der Parameter --force-after verwendet werden.
Das Skript wird unter Linux über bash ausgeführt, unter Windows über powershell.exe -NoProfile -ExecutionPolicy Bypass.
Variablen der Skriptvorlage
Beim Schreiben von before_script / after_script können die folgenden Vorlagenvariablen verwendet werden, die clmBot vor der Ausführung durch die tatsächlichen Werte ersetzt.
Allgemeine Variablen:
| Variable | Beschreibung |
|---|---|
{{ .ID }} | Installationspunkt id |
{{ .SUB_CODE }} | Zertifikatsabonnementnummer |
{{ .OS_TYPE }} | Betriebssystemtyp (windows / linux / darwin) |
{{ .IS_WINDOWS }} | Ist Windows (true / false) |
{{ .IS_LINUX }} | Ist Linux (true / false) |
{{ .TIMESTAMP }} | Aktueller Zeitstempel (Sekunden) |
{{ .DATETIME }} | Aktuelle Datum/Uhrzeit (Format 2006-01-02 15:04:05) |
{{ .DATE }} | Aktuelles Datum (Format 2006-01-02) |
{{ .LATEST }} | Ob das Zertifikat bereits das neueste ist (true / false). In Kombination mit --force-after kann im Skript geprüft werden, ob nachfolgende Schritte übersprungen werden |
Variablen nach Zertifikatsformat:
| Format | Variable | Beschreibung |
|---|---|---|
| pem | {{ .PEM_CERT_PATH }} | Dateipfad des Website-Zertifikats |
| pem | {{ .PEM_CA_PATH }} | Dateipfad der CA-Kette |
| pem | {{ .PEM_KEY_PATH }} | Dateipfad des privaten Schlüssels |
| pfx | {{ .PFX_PATH }} | Dateipfad der PFX-Datei |
| pfx | {{ .PFX_KEY_PASS }} | PFX-Privatschlüssel-Passwort |
| jks | {{ .JKS_PATH }} | JKS-Dateipfad |
| jks | {{ .JKS_ALIAS }} | Zertifikatseintrag-Alias |
| jks | {{ .JKS_KEY_PASS }} | Privatschlüssel-Passwort des Eintrags |
| jks | {{ .JKS_STORE_PASS }} | Keystore-Passwort |
| iis | {{ .IIS_SITE_NAME }} | IIS-Websitename |
| iis | {{ .IIS_IPADDR }} | HTTPS-Bindungs-IP |
| iis | {{ .IIS_PORT }} | HTTPS-Bindungsport |
| iis | {{ .IIS_DOMAIN }} | HTTPS-Bindungsdomäne |
| exchange | {{ .EXCHANGE_SERVICES }} | Liste der Exchange-Dienstnamen (durch Kommas getrennt) |
Sicherheitsempfehlungen
config.yamlenthält Zugangsdaten und private Schlüsselpfade. Beschränken Sie die Dateiberechtigungen darauf, dass nur das Ausführungskonto lesen und schreiben darf (z. B.chmod 600 config.yaml).AccessSecretwird nach dem Speichern verschlüsselt abgelegt, dennoch sollten Sie vermeiden, die Konfigurationsdatei an nicht vertrauenswürdige Orte zu kopieren.- Verwenden Sie für clmBot ein dediziertes Ausführungskonto und erteilen Sie Berechtigungen nach dem Prinzip der geringsten Rechte, siehe Anforderungen an Ausführungsberechtigungen.