Direkt zum Inhalt
24.08.2023 - Admin-Alarm

Kein VPN-Verbindungsaufbau mit OpenVPN-Client nach Upgrade auf Debian 12

Torsten Lange

Von Security-Consultant Torsten Lange

Admins aufgepasst! - Nach einem Upgrade von Debain 10/11 auf Debian 12 (bookworm)[1] ist kein Verbindungsaufbau über den OpenVPN-Client möglich. Vorausgesetzt, Sie nutzen OpenVPN mit Zertifikat und Passwort mit einer PKCS12-Datei, in der sich der private Schlüssel und das Zertifikat befinden.

Bei einem Blick in das Log/Journal des Network-Managers fanden wir folgenden Eintrag:

nm-openvpn[8465]: Decoding PKCS12 failed. 
Probably wrong password or unsupported/legacy encryption

Nach etwas Recherche stellte sich heraus, dass mit Einführung des Provider-Konzeptes bei OpenSSL 3.x und dem Wechsel der OpenSSL-Version von 1.1.x auf 3.x der "Legacy"-Provider deaktiviert wurde.[2] Das lässt sich leicht überprüfen, wenn man sich die Liste "openssl list -providers" anzeigen lässt. Um beide Provider, also "Default" und "Legacy" zu nutzen, muss die Konfigurationsdatei /etc/ssl/openssl.cnf wie folgt geändert werden:

[provider_sect]
default = default_sect
legacy = legacy_sect

[default_sect]
activate = 1

[legacy_sect]
activate = 1

Der bessere Weg zur Lösung des Problems des OpenVPN-Client in Verbindung mit p12-Dateien besteht allerdings darin, den PKCS12-Container mit zeitgemäßen Cipher neu zu erstellen. Dazu geht man wie folgt vor:

Zuerst das p12-File sichern, z.B. mit

cp ovpnuser1.p12 ovpnuser1.p12.bak

Nun den privaten Schlüssel extrahieren:

openssl pkcs12 -legacy -in ovpnuser1.p12 -out ovpnuser1.key -nodes -nocerts
Enter Import Password:

Jetzt das Benutzer-Zertifikat:

openssl pkcs12 -legacy -in ovpnuser1.p12 -out ovpnuser1.crt -nokeys
Enter Import Password:

Jetzt wird ein neues PKCS12 File erstellt:

openssl pkcs12 -export -out ovpnuser1.p12 -in ovpnuser1.crt -inkey ovpnuser1.key
Enter Export Password:
Verifying - Enter Export Password:

... und überprüft. Das sollten dann so aussehen, z.B. ohne RC2-40-CBC:

openssl pkcs12 -info -in ovpnuser1.p12
Enter Import Password:
MAC: sha256, Iteration 2048
MAC length: 32, salt length: 8
PKCS7 Encrypted data: PBES2, PBKDF2, AES-256-CBC, Iteration 2048, PRF hmacWithSHA256

Vor dem erneuten VPN-Verbindungsaufbau muss ggf. der Network-Manager nochmal neu gestartet werden:

systemctl restart NetworkManager

 

[1] https://www.debian.org/releases/bookworm/amd64/release-notes/ch-information.en.html
[2] https://www.openssl.org/docs/man3.0/man7/migration_guide.html