Skip to main content

Consul-Zertifikate aus OpenBao

Zielgruppe: Betreuer · Stand: 06.11.2026

Die Lab-Consul-Server holen ihre TLS-Zertifikate aus OpenBao und erneuern sie selbst. Die Consul-Clients bekommen ihre Zertifikate von den Servern. Diese Seite beschreibt den Ablauf. Das spätere Consul-Buch verlinkt hierher.

Lab-PoC: Die Lab-Consul-Server sind auf diesem Weg neu aufgebaut. Die ACL-Einrichtung ist noch nicht abgeschlossen, weil sie an der abgebauten Lab-Nomad-Anmeldung hängt.

Ablauf

  1. Das Terraform-Modul proxmox/consul legt je Server eine an die Host-IP gebundene AppRole-Secret-ID an (siehe VMs per AppRole anmelden).
  2. Die Ansible-Rolle consul installiert bao und richtet den bao agent ein.
  3. Der Agent holt aus dem Mount pki-consul Zertifikat und Schlüssel (Server-Zertifikat für server.<dc>.consul und den FQDN des Hosts, Laufzeit 90 Tage) und lädt Consul bei jeder Erneuerung neu.
  4. Clients holen ihre Zertifikate per auto_encrypt vom Server und brauchen nur die CA-Kette. Die Kette liest das Modul ohne Token aus OpenBao.
  5. Gossip-Key und ACL-Bootstrap-Token spiegelt das Modul zusätzlich nach OpenBao (KV-Mount consul/). Im Lab bleibt Bitwarden dafür führend, in DEV soll OpenBao allein die Quelle sein.

Versionen

  • Modul proxmox/consul: Linie 0.3 nur mit dem OpenBao-Weg, ab 0.3.1. Version 0.3.0 nicht verwenden, sie enthält noch den alten Stand. Die Linie 0.2 bleibt für den Bestand.
  • Die Pipeline des Stacks braucht BAO_TOKEN per GitLab-JWT (siehe Pipeline per GitLab-JWT anmelden) sowie curl und jq im Runner-Image.

Prüfen

Der bao agent schreibt nach jedem Rendern eine Statusdatei unter /etc/consul.d/openbao/. Consul antwortet auf Port 8501 mit einem Zertifikat aus pki-consul.

Stolperfallen

Für Zertifikat, Schlüssel und CA nur eine template-Stanza mit pkiCert verwenden. Drei Stanzas stellen drei verschiedene Zertifikate aus, und Schlüssel und Zertifikat passen nicht zusammen.

  • .CAChain gibt es im Template nicht. ca.pem ist das Intermediate, den Root-Anteil bringt das Modul-Bundle zu den Clients.
  • Lokale Verbindungen laufen über 127.0.0.1, nie über localhost. Das Zertifikat enthält keinen localhost-Namen.
  • Connect-CA über OpenBao ist noch offen. Ob der Vault-Provider von Consul mit OpenBao funktioniert, ist nicht belegt.

Weiterführend