feat(auth): konfigurierbare TLS-Mindestversion fuer den Verzeichnisdienst
Domain Controller auf Windows Server 2012 R2 koennen TLS 1.2 per Registry deaktiviert haben. ad.min_tls_version (Default 1.2) erlaubt es, fuer solche Altsysteme auf 1.0/1.1 herunterzugehen; das Portal warnt dann bei jedem Start. Die Zertifikatspruefung bleibt in jedem Fall aktiv — fuer LDAP gibt es weiterhin keine Insecure-Option. Im Legacy-Modus kommen lediglich die CBC-SHA256-Suiten hinzu, die Go als unsicher einstuft; RC4, 3DES und Suiten ohne Forward Secrecy werden nie angeboten. README dokumentiert zusaetzlich die beiden anderen 2012-R2-Stolpersteine: SHA-1-signierte DC-Zertifikate (seit Go 1.24 nicht mehr umgehbar) und RSA-Schluesselaustausch (nur ueber GODEBUG=tlsrsakex=1). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NBHF4R9EAejDJUMdwr6C68
This commit is contained in:
parent
a2bce25424
commit
0fc2d8808b
10 changed files with 299 additions and 25 deletions
48
README.md
48
README.md
|
|
@ -315,6 +315,54 @@ Für die Fehlersuche lässt sich `logging.level` vorübergehend auf `debug`
|
|||
setzen — dann werden auch die verglichenen CNs protokolliert. **Im
|
||||
Normalbetrieb wieder auf `info` zurückstellen.**
|
||||
|
||||
### Alte Domain Controller (Windows Server 2012 R2 und älter)
|
||||
|
||||
Fehlendes TLS 1.3 ist **kein** Problem — das Portal verlangt mindestens
|
||||
TLS 1.2 und handelt automatisch herunter. Server 2012 R2 beherrscht TLS 1.2
|
||||
für Schannel standardmäßig. Scheitert die Verbindung trotzdem, ist fast immer
|
||||
eine dieser drei Ursachen im Spiel. Die Fehlermeldung von `vpnportal check`
|
||||
sagt, welche:
|
||||
|
||||
| Fehlermeldung enthält | Ursache | Behebung |
|
||||
|---|---|---|
|
||||
| `protocol version not supported`, `handshake failure` | TLS 1.2 ist auf dem DC per Registry deaktiviert | `ad.min_tls_version: "1.0"` setzen (siehe unten) |
|
||||
| `insecure algorithm SHA1-RSA`, `certificate signed by unknown authority` | DC-Zertifikat ist mit SHA-1 signiert | **Zertifikat neu ausstellen** — siehe Kasten |
|
||||
| `tls: no cipher suite supported by both` | DC bietet nur RSA-Schlüsselaustausch | `GODEBUG=tlsrsakex=1` in der Unit setzen |
|
||||
|
||||
**TLS-Mindestversion herabsetzen:**
|
||||
|
||||
```yaml
|
||||
ad:
|
||||
min_tls_version: "1.0" # Default ist 1.2
|
||||
```
|
||||
|
||||
Das Portal warnt dann bei jedem Start. Die **Zertifikatsprüfung bleibt aktiv** —
|
||||
für LDAP gibt es bewusst keine Möglichkeit, sie abzuschalten. Herabgesetzt
|
||||
werden nur die zulässigen Protokollversionen und die angebotenen
|
||||
Cipher-Suiten; RC4 und 3DES werden auch dann nie angeboten.
|
||||
|
||||
> **SHA-1-Zertifikate lassen sich nicht mehr umgehen.** Go 1.24 hat den
|
||||
> Notausgang `GODEBUG=x509sha1=1` ersatzlos entfernt. Ist das LDAPS-Zertifikat
|
||||
> des Domain Controllers mit SHA-1 signiert — bei ADCS-Vorlagen aus der
|
||||
> 2012-R2-Ära der Normalfall — hilft nur, es mit SHA-256 neu auszustellen.
|
||||
> Prüfen lässt sich das so:
|
||||
>
|
||||
> ```bash
|
||||
> openssl s_client -connect dc01.firma.local:636 -showcerts </dev/null 2>/dev/null \
|
||||
> | openssl x509 -noout -text | grep -i "signature algorithm"
|
||||
> ```
|
||||
>
|
||||
> Steht dort `sha1WithRSAEncryption`, muss das Zertifikat getauscht werden.
|
||||
|
||||
**RSA-Schlüsselaustausch erzwingen** (letzte Rettung, keine Forward Secrecy).
|
||||
Go schaltet diese Suiten seit 1.22 ab; sie lassen sich nur global per GODEBUG
|
||||
reaktivieren. In der systemd-Unit:
|
||||
|
||||
```ini
|
||||
[Service]
|
||||
Environment=GODEBUG=tlsrsakex=1
|
||||
```
|
||||
|
||||
### Passwort abgelaufen
|
||||
|
||||
Das Portal kann keine Passwörter ändern. Ist ein AD-Passwort abgelaufen
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue