nachdem ich mich nun lange damit gequält habe, eine zertifikatsbasierte VPN Einwahl zu realisieren (bin kein Lancom Mensch, eher Fortigate ) und ich auch nicht so recht etwas zu den "Spezialitäten" gefunden habe, möchte ich gerne ein paar Dinge hier teilen. Ich nutze seit je her openssl auf einer Linux Kiste. Ich hoffe, das ist erwünscht, sonst einfach löschen
## besonders Punkt 6 beachten ##
1. Beim erzeugen der Zertifkate müssen diverse Vorgaben erfüllt werden (Stichwort "keyUsage"). Ausserdem muss in dem Zertifikat für den Lancom unter common Name der FQDN des Gerätes stehen (z.B. vpn.example.com). Wenn das nicht der Fall ist, kann es funktionieren, muss aber nicht Insbesondere Apple und iOS Geräte sind hier empfindlich.
2. Vor dem Einspielen des Zertifkates ggf. alte / verwaiste Zertifikate löschen (Achtung - natürlic nicht, wenn bereits andere Tunnel mit Zertifkaten laufen ) "Weboberfläche / Extras / LCOS-Menübaum / Status/ Dateisystem"
3. Am besten ein (vollständiges! - also mit CA-Zertifikat) PKCS#12 über "Weboberfläche / Extras / Dateimanagemenr / Zertifikat oder Datei hochladen" hochladen
4. Bei dem Hochladen des PKCS#12 ggf. (empfohlen) den Haken bei "Vorhandene CA Zertifikate ersetzen" setzen und auf Syslog-Nachrichten (SSH Konsole) achten ("trace + vpn-status")- hier werden eventuelle Fehlermeldungen angezeigt, die beim Übertragen der Daten aus dem PKCS#12 Container auftreten
5. Kontrolle der Zertifikate mittels "show vpn cert" und "show vpn ca"
6. ACHTUNG:
Wenn man sich das Subject mit openssl anzeigen lässt (openssl x509 -in -text -noout client-cert.pem), dann werden die Attribute "verkehrt herum" ausgegeben, für den Lancom-Identitäten muss die Ausgabe also "gedreht werden".
siehe dazu auch: https://security.stackexchange.com/ques ... ame-fields
Beispiel (Linux):
Code: Alles auswählen
openssl x509 -in -text -noout client-cert.pem | grep -ie Subject:
C=DE,ST=Bundesland,O=Firma,L=Ort,CN=commonName
Code: Alles auswählen
CN=commonName,L=Ort,O=Firma,ST=Bundesland,C=DE
Welche Merkmale sind erforderlich?
im CA-Zertifikat:
basicConstraints = critical,CA:true
keyUsage = keyCertSign, cRLSign
im Lancom-Zertifikat (=Server):
- Pkt.1 oben bzgl Common Name beachten! -
basicConstraints = critical,CA:false
keyUsage = digitalSignature, keyEncipherment, keyAgreement, nonRepudiation
extendedKeyUsage = serverAuth
Im Client-Zertifikat (Lancom Advanced Client = NCP Client):
basicConstraints = critical,CA:false
keyUsage = digitalSignature, keyEncipherment, keyAgreement, dataEncipherment
extendedKeyUsage = clientAuth
Ich hoffe, es hilft dem einen oder anderen
Grüße
Sebastian