Zum Hauptinhalt springen

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

FeldBeschreibung
base_urlCloud-API-Adresse, gemäß den Bereitstellungsinformationen ausfüllen; in der Regel keine Änderung erforderlich
ignore_sslGibt an, ob die HTTPS-Zertifikatsprüfung ignoriert werden soll. Nur in kontrollierten Umgebungen mit selbstsignierten Zertifikaten aktivieren
access_keyVon der Cloud zugewiesener AccessKey
access_secretVon 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:

FeldBeschreibung
idKennung des Installationspunkts; es wird ein Name mit geschäftlicher Bedeutung empfohlen
sub_codeZertifikatsabonnementnummer, die dem Zertifikatsabonnement in der Verwaltungskonsole entspricht; clmBot bezieht darüber das neueste Zertifikat
formatZertifikatsformat und Dateipfad, es darf nur einer der folgenden Werte beibehalten werden: pem, pfx, jks, iis, exchange
before_scriptSkript, das vor der Aktualisierung ausgeführt wird; schlägt das Skript fehl, wird die Aktualisierung des aktuellen Installationspunkts abgebrochen
after_scriptSkript, 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:

FeldBeschreibung
cert_pathPfad zur Standortzertifikatsdatei. Bei Aktualisierung wird das Blattzertifikat geschrieben; ist ca_path leer, wird zugleich die vollständige Zertifikatskette geschrieben
ca_pathPfad zur CA-Kettendatei, kann leer sein
key_pathPfad zur Private-Key-Datei

pfx

Geeignet für Dienste, die ein einzelnes Zertifikatspaket (PKCS#12) benötigen:

FeldBeschreibung
pathPfad zur PFX-Datei
key_passPFX-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:

FeldBeschreibung
pathPfad zur JKS-Datei
aliasAlias des Zertifikatseintrags. Wenn leer, kann er nur dann automatisch abgeleitet werden, wenn der Keystore genau einen Eintrag enthält
key_passPasswort des Eintrags-Privatschlüssels
store_passKeystore-Passwort

iis

Geeignet für Windows IIS-HTTPS-Bindungen:

FeldBeschreibung
nameIIS-Websitename, einsehbar im IIS-Manager
addrIP der HTTPS-Bindung, * bedeutet alle IPs
portPort der HTTPS-Bindung
domainDomä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:

FeldBeschreibung
servicesListe 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:

  1. Lokale Zertifikatsdateien sichern (es wird eine .bak-Sicherung mit Zeitstempel erzeugt).
  2. before_script ausführen; schlägt dies fehl, wird die Aktualisierung des aktuellen Installationspunkts abgebrochen.
  3. Neues Zertifikat schreiben.
  4. after_script ausfü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:

VariableBeschreibung
{{ .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:

FormatVariableBeschreibung
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.yaml enthä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).
  • AccessSecret wird 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.