Zertifikat-Management
Übersicht aller TLS-Zertifikate, Laufzeiten, Auto-Renewal und Notfallprozesse. Kein Zertifikat läuft ab ohne dass jemand es weiß.
Prinzip: Alle Zertifikate im Register
intelego/specs/infrastructure/certs/cert-inventory.yaml.
Der Health-Check prüft Ablaufdaten automatisch bei jedem trigger-validation-chain.sh full.
Warn-Schwellen
| Status | Verbleibende Tage | Aktion |
|---|---|---|
| OK | > 30 Tage | Keine Aktion nötig |
| WARN | 7–30 Tage | Renewal prüfen / manuell erneuern |
| CRITICAL | < 7 Tage | Sofort erneuern — Ausfall droht |
Aktuelle Zertifikate
| Domain | Service | Aussteller | Gültig bis | Auto-Renewal | Node |
|---|---|---|---|---|---|
gitlab.intelego.solutions |
GitLab CE | Let's Encrypt R13 | 25.07.2026 OK | täglich 03:30 | intelego |
Vollständige Liste: intelego/specs/infrastructure/certs/cert-inventory.yaml
Let's Encrypt Renewal
Automatisch (Standard)
GitLab CE erneuert Let's Encrypt automatisch täglich um 03:30. Kein manueller Eingriff nötig solange Port 80 erreichbar ist.
Manuell erzwingen
ssh root@178.105.26.127 gitlab-ctl renew-le-certs
Status prüfen
ssh root@178.105.26.127 \ "openssl x509 -in /etc/gitlab/ssl/gitlab.intelego.solutions.crt \ -noout -subject -issuer -dates"
Voraussetzungen für Auto-Renewal
- DNS zeigt auf Server (Port 80 ACME-Challenge)
- Port 80 von extern erreichbar
- Server läuft 03:30 Uhr UTC
Neues Zertifikat registrieren
Wenn ein neuer Service mit TLS aufgebaut wird:
- Zertifikat installieren
- Eintrag in
cert-inventory.yamlhinzufügen - Health-Check laufen lassen
- Commit + Evidence
Template
- id: "subdomain.domain.tld" service: "Service Name" domain: "subdomain.domain.tld" server: "IP" path_on_server: "/pfad/cert.crt" issuer: "Let's Encrypt R13" issued: "YYYY-MM-DD" expires: "YYYY-MM-DD" auto_renew: true renew_method: "gitlab-ctl renew-le-certs" node: "intelego" status: "active"
Notfall: Zertifikat abgelaufen
Sofortmaßnahme GitLab
# 1. Zertifikat erneuern
ssh root@SERVER 'gitlab-ctl renew-le-certs'
# 2. Falls Port 80 blockiert ist:
ssh root@SERVER 'gitlab-ctl reconfigure'
# 3. Falls Let's Encrypt nicht geht (DNS-Problem):
# Selbst-signiertes Zertifikat als Überbrückung
ssh root@SERVER "
cd /etc/gitlab/ssl
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout gitlab.intelego.solutions.key \
-out gitlab.intelego.solutions.crt \
-subj '/CN=gitlab.intelego.solutions'
gitlab-ctl reconfigure
"
Zertifikat widerrufen
Wenn ein privater Key kompromittiert wurde:
# Let's Encrypt Zertifikat widerrufen certbot revoke \ --cert-path /etc/gitlab/ssl/gitlab.intelego.solutions.crt # Danach sofort neues Zertifikat holen gitlab-ctl renew-le-certs
Nach Widerruf: Eintrag in cert-inventory.yaml
auf status: "revoked" setzen + Commit.
Automatischer Health-Check
Der Zertifikat-Check läuft automatisch in der Validation Chain:
bash iio/specs/scripts/trigger-validation-chain.sh /home/zolo/space full # → Check 5: Zertifikat-Ablauf (aus cert-inventory.yaml)
Oder manuell:
bash iio/base/health-check/scripts/health-check-all.sh /home/zolo/space
IIO Manual · Zertifikat-Management ·
Register: intelego/specs/infrastructure/certs/cert-inventory.yaml ·
← Übersicht