# Cert-Manager — Benutzerhandbuch

## Erste Schritte

### Anmeldung

Öffnen Sie `http://localhost:8960` in Ihrem Browser. Melden Sie sich mit Ihrem Benutzernamen und Passwort an.

**Demo-Zugangsdaten:**

| Benutzer | Passwort | Rolle |
|----------|----------|-------|
| admin | admin | Administrator |

Nach der Anmeldung sehen Sie das Dashboard mit einer Übersicht über alle überwachten Server und deren Zertifikatsstatus.

---

## Rollen und Berechtigungen

### Administrator
- Kann alles: Server verwalten, Erneuerungen anfordern, Alert-Regeln konfigurieren
- Hat Zugriff auf alle Verwaltungsfunktionen
- Kann CSV-Exporte erstellen

### Viewer
- Reine Leserechte auf Dashboard, Server, Zertifikate und Alerts
- Kann CSV-Exporte erstellen
- Keine Verwaltungsfunktionen

---

## Dashboard

Das Dashboard zeigt auf einen Blick:

- **Server** — Anzahl überwachter Windows-Server
- **Zertifikate gesamt** — Gesamtzahl aller erkannten Zertifikate
- **Ampel-Übersicht:**
  - **Grün** — Zertifikate mit mehr als 30 Tagen Restlaufzeit
  - **Gelb** — Zertifikate mit 14–30 Tagen Restlaufzeit (Warnung)
  - **Rot** — Zertifikate mit weniger als 14 Tagen Restlaufzeit (Kritisch)
  - **Abgelaufen** — Bereits abgelaufene Zertifikate
- **Nächste Abläufe** — Die 10 Zertifikate, die als nächstes ablaufen

---

## Server-Übersicht

Die Server-Ansicht zeigt alle überwachten Windows-Server:

- **Hostname** — Name des Servers
- **IP-Adresse** — Netzwerkadresse
- **Standort** — Klinikstandort (z.B. Ilmenau, Arnstadt)
- **Rollen** — Serverfunktionen (Domain Controller, Exchange, IIS etc.)
- **Zertifikate** — Anzahl der Zertifikate auf diesem Server
- **Nächster Ablauf** — Frühestes ablaufendes Zertifikat
- **Letzter Check** — Zeitpunkt des letzten Agent-Reports

### Server hinzufügen (Admin)

Neue Server können manuell über die Server-Verwaltung angelegt werden. Sobald der PowerShell-Agent auf dem Server eingerichtet ist, meldet er sich automatisch an und aktualisiert die Zertifikatsdaten.

---

## Zertifikate

Die Zertifikats-Ansicht zeigt alle erkannten Zertifikate mit Ampel-Farbe:

- **Subject** — CN des Zertifikats
- **Aussteller** — CA oder Self-Signed
- **CA-Profil** — Zugeordnete CA-Regel, z.B. interne AD CS oder Public-CA
- **SAN** — Subject Alternative Names
- **Server** — Auf welchem Server das Zertifikat liegt
- **Gültig bis** — Ablaufdatum mit Ampelfarbe
- **Template** — AD CS-Template (falls vorhanden)
- **Bindungen** — Welche Dienste das Zertifikat nutzen (IIS, LDAPS, RDP etc.)

### Filter

Zertifikate können gefiltert werden nach:
- **Server** — Nur Zertifikate eines bestimmten Servers
- **Status** — Abgelaufen, Kritisch, Warnung oder OK

### Zertifikatsdetails

Klicken Sie auf ein Zertifikat für Details:
- Thumbprint, Seriennummer, Schlüssellänge
- Zertifikatsspeicher (z.B. LocalMachine\My)
- Ob selbstsigniert
- Alle Dienst-Bindungen

---

## CA-Profile konfigurieren (Admin)

CA-Profile legen fest, welcher Aussteller zu welcher CA gehoert und ob der Agent eine Erneuerung ausfuehren darf.

1. Oeffnen Sie **CA-Profile**
2. Klicken Sie auf **Profil**
3. Tragen Sie ein:
   - **Name** — sprechender Name, z.B. `Interne AD CS`
   - **Typ** — `ADCS`, `ACME` oder `MANUAL`
   - **Issuer-Match** — Text oder Regex-Fragmente, z.B. `IKK-CA|Issuing CA`
   - **AD-CS Config** — Ziel-CA im Format `CAHOST\CAName`
   - **Default Template** — optionaler Fallback, z.B. `WebServer`
   - **Renewal Mode** — meist `approval_required`
4. Speichern Sie das Profil
5. Klicken Sie bei Bedarf auf **Neu zuordnen**

Ein Renew-Button erscheint nur, wenn das Zertifikat einem aktiven AD-CS-Profil zugeordnet ist, ein Template hat und die AD-CS Config gesetzt ist. ACME-, Public-CA- und selbstsignierte Zertifikate bleiben sichtbar, werden aber nicht automatisch durch den Windows-Agent erneuert.

---

## Erneuerung anfordern (Admin)

So fordern Sie eine Zertifikatserneuerung an:

1. Pruefen Sie unter **CA-Profile**, ob das AD-CS-Profil eine `AD-CS Config` hat
2. Oeffnen Sie **Zertifikate** oder die Serverdetails
3. Klicken Sie beim gewuenschten Zertifikat auf den Renew-Button
4. Das Dashboard legt einen Renew-Job mit Template, Thumbprint und CA-Config an
5. Der Agent fuehrt `certreq` gegen die konfigurierte AD-CS-CA aus
6. Das Ergebnis (Erfolgreich/Fehlgeschlagen) wird im Dashboard angezeigt

### Erneuerungen einsehen

Unter **Erneuerungen** sehen Sie alle angeforderten und durchgeführten Erneuerungen mit Status und Ergebnis.

---

## Alert-Regeln konfigurieren (Admin)

Alerts warnen Sie per E-Mail, bevor Zertifikate ablaufen.

### Neue Regel anlegen

1. Gehen Sie zu **Alerts → Regeln**
2. Klicken Sie auf **Neue Regel**
3. Geben Sie an:
   - **Tage vor Ablauf** — z.B. 30, 14 oder 7
   - **Empfänger** — E-Mail-Adresse
4. Speichern

### Voreingestellte Regeln

Das System kommt mit drei Standard-Regeln:
- 30 Tage vor Ablauf → andre@astockma.de
- 14 Tage vor Ablauf → andre@astockma.de
- 7 Tage vor Ablauf → andre@astockma.de

### Alert-Protokoll

Unter **Alerts → Protokoll** sehen Sie alle versendeten Benachrichtigungen. Jede Kombination aus Zertifikat und Regel wird nur einmal gesendet.

---

## CSV-Export

So exportieren Sie alle Zertifikate als CSV:

1. Klicken Sie auf **Export → CSV**
2. Die Datei enthält: Server, Standort, Subject, Aussteller, SAN, Thumbprint, Gültigkeitszeitraum, Template, Selbstsigniert, Bindungen
3. Semikolon-separiert, geeignet für Excel und Audits

---

## PowerShell-Agent installieren

Der Agent läuft auf jedem Windows-Server und sammelt Zertifikatsdaten.

### Automatische Installation per Deploy-Runner

Fuer die automatische Installation laeuft `deploy_runner.ps1` auf einem Windows-Admin-Server im internen Netz. Der Runner holt offene Jobs aus dem Dashboard ab und installiert den Agent auf den Zielservern. Die VPS speichert keine Domain-Credentials.

1. Legen Sie den Runner auf einem Admin-Server ab, z.B. `C:\ProgramData\Cert-Manager\deploy_runner.ps1`
2. Starten Sie den Runner einmal manuell:
   ```powershell
   powershell -ExecutionPolicy Bypass -File C:\ProgramData\Cert-Manager\deploy_runner.ps1 -RunOnce -DashboardUrl https://cert-manager.c3po42.de -RunnerKey "<DEPLOY_RUNNER_KEY>"
   ```
3. Optional installieren Sie den Runner als geplante Aufgabe:
   ```powershell
   powershell -ExecutionPolicy Bypass -File C:\ProgramData\Cert-Manager\deploy_runner.ps1 -Install -DashboardUrl https://cert-manager.c3po42.de -RunnerKey "<DEPLOY_RUNNER_KEY>"
   ```
4. Oeffnen Sie im Dashboard **Server** oder den Netzwerk-Scan
5. Waehlen Sie **Agent installieren** oder **Importieren + Agent installieren**
6. Waehlen Sie `WINRM` oder `SMB_TASK`
7. Pruefen Sie den Status unter **Agent-Deploy**

**WINRM** nutzt PowerShell Remoting. **SMB_TASK** kopiert ueber `\\SERVER\C$` und nutzt `schtasks`. Der Runner muss mit einem Konto laufen, das auf den Zielservern lokale Admin-Rechte hat.

### Voraussetzungen

- Windows Server 2016 oder neuer
- PowerShell 5.1 oder neuer (vorinstalliert)
- Netzwerkzugang zum Cert-Manager Dashboard (Port 8960 oder HTTPS)

### Installation

1. Kopieren Sie `agent.ps1` auf den Windows-Server (z.B. nach `C:\CertAgent\`)
2. Passen Sie die Variablen am Anfang des Scripts an:
   - `$DashboardUrl` — URL des Dashboards (z.B. `https://cert-manager.c3po42.de`)
   - `$AgentKey` — API-Key (Standard: `cert-agent-2026`)
   - `$Standort` — Standort des Servers (z.B. `Ilmenau`)
3. Testen Sie den Agent manuell:
   ```powershell
   powershell -ExecutionPolicy Bypass -File C:\CertAgent\agent.ps1
   ```

### Automatisierung per Aufgabenplanung

Richten Sie einen Scheduled Task ein, der den Agent regelmäßig ausführt:

1. Öffnen Sie die **Aufgabenplanung** (taskschd.msc)
2. Erstellen Sie eine neue Aufgabe:
   - **Name:** Cert-Manager Agent
   - **Trigger:** Täglich, alle 4 Stunden (oder nach Bedarf)
   - **Aktion:** Programm starten
     - Programm: `powershell.exe`
     - Argumente: `-ExecutionPolicy Bypass -File C:\CertAgent\agent.ps1`
   - **Sicherheitsoptionen:** Mit höchsten Privilegien ausführen, unabhängig von Benutzeranmeldung

### Was der Agent tut

1. Liest alle Zertifikate aus dem Speicher `LocalMachine\My`
2. Ermittelt für jedes Zertifikat: Subject, SAN, Aussteller, Template, Schlüssellänge
3. Prüft Bindungen: IIS-Sites, RDP, SQL Server, LDAPS
4. Sendet alles als JSON an `POST /api/agent/report`
5. Das Dashboard aktualisiert sich automatisch per SSE

---

## Tipps

- **Regelmäßig prüfen** — Schauen Sie mindestens wöchentlich auf das Dashboard, auch wenn Alerts konfiguriert sind
- **Alert-Empfänger** — Richten Sie Alerts für mehrere Empfänger ein (Team-Postfach)
- **Abgelaufene Zertifikate** — Sofort erneuern, sie können Dienste beeinträchtigen
- **Selbstsignierte Zertifikate** — Werden erkannt und markiert, sollten durch CA-Zertifikate ersetzt werden
- **CSV-Export** — Nutzen Sie den Export für regelmäßige Audits und Dokumentation
- **Agent-Häufigkeit** — Für kritische Server empfehlen sich kürzere Intervalle (z.B. alle 2 Stunden)
