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
Kommentare