105 lines
2.4 KiB
Markdown
105 lines
2.4 KiB
Markdown
# 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).
|
||
```
|