OpenVPN und Zertifikate war noch nie ein Problem. Liegen die Zertifikate jedoch auf einem Yubikey, benötigt openVPN eine Schnittstelle um diese zu lesen. Dies ist openSC mit der opensc-pkcs11.dll.
Relevante Konfiguration aus openvpn-client-Konfiguration:
management 127.0.0.1 1201
management-hold
management-query-passwords
pkcs11-providers ‚c:\opensc-pkcs11.dll‘
pkcs11-id-management
Obige Konfiguration führt dazu, dass openVPN beim Starten einen Dialog liefert, wo ein Zertifikat ausgewählt werden kann. Yubikey muss natürlich gesteckt sein.
Nach PIN-Bestätigung verbindet sich OpenVPN. Wichtig ist, dass in der OpenVPN-Konfiguration gerade kein eingebettetes Zertifikat + Key existiert. Dies muss aus der Konfig raus und liegt ja auf dem Yubikey.
der <ca>-Block in der Konfig kann/muss bleiben. Dies ist ja jene Zertifizierungsstelle, die das OpenVPN-Server-Zertifikat auch ausgestellt hat und so dem client ermöglicht, den Server zu verifizieren.
opensc-pkcs11.dll gibt es im opensc-Paket. Es ist tatsächlich nur diese eine DLL nötig.