DAT CMS

DAT CMS erstellt Zertifikate, speichert sie in einer Datenbank und übermittelt die passenden Zertifikate an ausstellende und prüfende Dienste. Das Protokollverhalten beschreibt die DAT-CMS-Spezifikation.

Laufzeitkonfiguration erstellen

Dienst zur Verwaltung von DAT-Zertifikaten

dns

Server

PortStandard: 8088
HostnameStandard: Auto
terminal

Ausführungsbefehl

bash
API prüfen
bash
database

Datenbank

API-CacheStandard: 60
verified_user

DAT-Zertifikat

Signaturalgorithmus
Verschlüsselungsalgorithmus
Verzögerung der ZertifikatsausstellungSekundenhelp
Zeitraum der DAT-AusstellungSekundenhelp
DAT TTL (Gültigkeitsdauer)Sekundenhelp
Zeitplan zur Erstellung von DAT-Zertifikaten (Cron)help
lock

Zugriffskontrolle

Master token
DAT-Zertifikate erstellen und Serverversion abrufen
Full Cert token
Full-Zertifikate (Pair Key, Hash Key) abrufen
Verify Cert token
Verify-Zertifikate (Verify Key Only) abrufen

Mit Docker ausführen

Führen Sie den Container als Benutzer ohne root-Rechte aus. Binden Sie bei SQLite ein beschreibbares Datenverzeichnis ein. Übergeben Sie Tokens und Datenbankpasswörter über einen Mechanismus zur Einbindung von Secrets statt über den Befehlsverlauf.

docker run --rm --name dat-cms -p 8088:8088 \
  --user 10001:10001 \
  -v "$PWD/dat-cms-data:/data" \
  -e PORT=8088 \
  -e DB_URI='sqlite:/data/data.db' \
  -e TOKEN_MASTER='replace-with-a-secret' \
  -e TOKEN_CERT_FULL='replace-with-a-secret' \
  -e TOKEN_CERT_VERIFY='replace-with-a-secret' \
  sarolab/dat-cms

Datenbank

Konfigurieren Sie mit DB_URI eine Verbindung zu SQLite, PostgreSQL oder MySQL. MariaDB verbindet sich über das MySQL-Protokoll. CMS speichert Ergebnisse von Zertifikatsabfragen als Snapshot im Cache und stellt bei einem vorübergehenden Fehler der Speicheraktualisierung weiterhin den letzten erfolgreichen Snapshot bereit.

DB_CACHE_SECS legt das Aktualisierungsintervall des Snapshot fest, DB_QUERY_TIMEOUT_SECS begrenzt die Aktualisierungsabfragen. Existiert kein erfolgreicher Snapshot und kann der Speicher nicht gelesen werden, gibt der Dienst DAT_STORE_UNAVAILABLE zurück.

Zugriffsrollen

UmgebungsvariableBerechtigungVerwendet von
TOKEN_MASTERZertifikate registrieren und geschützte Version abrufenBetrieb
TOKEN_CERT_FULLVollständige Zertifikate abrufenDAT-ausstellende Dienste
TOKEN_CERT_VERIFYZertifikate nur zur Prüfung abrufenPrüf- und Entschlüsselungsdienste

Jede Variable akzeptiert durch Kommas getrennte alphanumerische Tokens. Ist die Tokenliste einer Rolle leer, werden ihre endpoints geöffnet und eine Warnung protokolliert.

Zertifikate erstellen

Die master-Rolle registriert ein Zertifikat mit Signaturalgorithmus, Verschlüsselungsalgorithmus, Ausbreitungsverzögerung, Ausstellungszeitraum und TTL. Während der Ausbreitungsverzögerung synchronisieren die Dienste das neue Zertifikat, bevor es ausstellungsfähig wird.

Clientintegration

  1. Verwenden Sie für ausstellende Dienste das vollständige Token und den endpoint für vollständige Zertifikate.
  2. Verwenden Sie für Prüfdienste das Prüftoken und die verify-only-Option.
  3. Prüfen Sie das Ergebnis der ersten Synchronisierung. Muss der Start fehlschlagen, rufen Sie die API zur sofortigen Synchronisierung auf.
  4. Schließen Sie den Manager bei aktivierter automatischer Synchronisierung während der Anwendungsbeendigung.

Die Bibliotheksleitfäden beschreiben builder und Beendigungsverhalten der einzelnen Sprachen.

Betriebsprüfungen

  • /health und /version/api melden den Zustand ohne Authentifizierung.
  • /version erfordert das master token, wenn diese Rolle konfiguriert ist.
  • Erfassen Sie Protokolle aus Standardausgabe und Standardfehlerausgabe.
  • Leiten Sie Beendigungssignale weiter und lassen Sie Datenbank und scheduler genug Zeit zum Schließen.

Kubernetes

Stimmen Sie Containerport und probes auf den Dienstport ab und binden Sie das Datenverzeichnis mit Schreibzugriff für den Benutzer ohne root-Rechte ein. Fügen Sie Tokens und Datenbankverbindungsdaten über Secrets ein.

securityContext:
  runAsNonRoot: true
  runAsUser: 10001
  runAsGroup: 10001
containers:
  - name: dat-cms
    image: sarolab/dat-cms
    ports: [{ containerPort: 8088 }]
    readinessProbe: { httpGet: { path: /health, port: 8088 } }
    livenessProbe: { httpGet: { path: /health, port: 8088 } }