Files
SMTPGraphRelay/README.md
T

105 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SMTPGraphRelay V1.4 Zertifikats-Lifecycle
V1.4 erweitert V1.3 um Zertifikatsüberwachung und sichere Rotation.
## Relay: automatische Zertifikatsüberwachung
Beim Start wird das Zertifikat aus `Graph.CertificateThumbprint` geprüft:
- Zertifikat vorhanden
- privater Schlüssel vorhanden
- Ablaufdatum
Standardwerte:
- Warnung ab 60 Tagen Restlaufzeit
- kritisch ab 14 Tagen
- erneute Prüfung alle 12 Stunden
Optional in `config.json`:
```json
"Graph": {
"TenantId": "...",
"ClientId": "...",
"CertificateThumbprint": "...",
"SenderMailbox": "info@example.com",
"ForceSender": true,
"CertificateWarningDays": 60,
"CertificateCriticalDays": 14,
"CertificateCheckHours": 12
}
```
Die zusätzlichen Werte sind optional; bestehende Configs funktionieren unverändert.
## Rotation
`Renew-SMTPGraphRelayCertificate.ps1` muss als Administrator mit
**Windows PowerShell 5.1** ausgeführt werden.
```powershell
cd "C:\Program Files\SMTPGraphRelay"
.\Renew-SMTPGraphRelayCertificate.ps1
```
Ablauf:
1. bestehende Config lesen
2. neues nicht exportierbares Zertifikat in `LocalMachine\My` erzeugen
3. Entra-Admin interaktiv anmelden
4. bestehende App über ihre ClientId finden
5. neues Zertifikat **zusätzlich** in `keyCredentials` hinterlegen
6. App-only Login mit dem neuen Zertifikat testen
7. erst danach `config.json` atomar auf den neuen Thumbprint umstellen
8. Relay-Scheduled-Task neu starten
9. optional altes Cloud- und lokales Zertifikat entfernen
Exchange Application RBAC muss nicht neu aufgebaut werden, weil die App/ClientId
bei der Rotation unverändert bleibt.
## Warum das alte Zertifikat zunächst erhalten bleibt
Die sichere Reihenfolge ist:
```text
OLD funktioniert
|
NEW erzeugen
|
OLD + NEW in Entra
|
NEW Auth testen
|
Config -> NEW
|
Relay neu starten
|
erst dann optional OLD entfernen
```
So gibt es während der Rotation keinen Zeitpunkt ohne gültiges Credential und ein
Rollback bleibt möglich.
## Update von V1.3
Task stoppen:
```powershell
Stop-ScheduledTask -TaskName "SMTPGraphRelay"
```
V1.3 sichern und V1.4 als `SMTPGraphRelay.ps1` ablegen, dann:
```powershell
Start-ScheduledTask -TaskName "SMTPGraphRelay"
```
Die `config.json` muss nicht geändert werden.
Im Log erscheint bei einem gesunden Zertifikat beim Start beispielsweise:
```text
Graph-Zertifikat gültig bis 2028-08-13 23:00:00 (729 Tage verbleibend).
```