Hi,
da sich einiges geändert hat bei OpenVPN und Debian 8 Jessy wollte ich mal ein keine neues HowTo dazu schreiben.
Explizit geht es um die Version : OpenVPN 2.3.4 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [MH] [IPv6] built on Jun 26 2017
Die Wichtigste änderung von OpenVPN unter Debian 6 & 7 ist das man jetzt ein Tool hat names pkitool mit dem sich alle Zertifikate erstellen lassen und man kann ohne große Umwege neue Keys für User/Clients erstellen OHNE das man die alten löschen muss.
Zu erwähnen ist auch noch das man das pkitool nach installieren muss, damit kommen auch die alten Scripte mit.
Früher waren diese unter den Documents abgelegt was aber NICHT mehr der Fall ist.
Installation:
Nach dem wechsel von User auf Root mit su.
aptitude install openvpn oder apt-get install openvpn oder apt install openvpn
Aber wie oben schon erwähnt fehlen alle Scripte und das pkitool!
Das pkitool installieren wir dann noch hinterher:
aptitude install easy-rsa oder apt-get install easy-rsa oder apt install easy-rsa
Im Verzeichnis /usr/share/easy-rsa findet man jetzt die Scripte die man schon von der vorgänger Version sondern auch das pkitool.
Ich kopiere mi diesen Ordner dann immer in den OpenVPN Ordner.
cp -R /usr/share/easy-rsa /etc/openvpn/easy-rsa
Nun wechselt man in das easy RSA Verzeichnis unter OpenVPN
cd /etc/openvpn/easy-rsa/
Und schauen uns erstmal an was wir hier für Dateien haben
l insgesamt 120K -rwxr-xr-x 1 root root 119 Dez 25 19:27 build-ca -rwxr-xr-x 1 root root 352 Dez 25 19:27 build-dh -rwxr-xr-x 1 root root 188 Dez 25 19:27 build-inter -rwxr-xr-x 1 root root 163 Dez 25 19:27 build-key -rwxr-xr-x 1 root root 157 Dez 25 19:27 build-key-pass -rwxr-xr-x 1 root root 249 Dez 25 19:27 build-key-pkcs12 -rwxr-xr-x 1 root root 268 Dez 25 19:27 build-key-server -rwxr-xr-x 1 root root 213 Dez 25 19:27 build-req -rwxr-xr-x 1 root root 158 Dez 25 19:27 build-req-pass -rwxr-xr-x 1 root root 449 Dez 25 19:27 clean-all -rwxr-xr-x 1 root root 1,5K Dez 25 19:27 inherit-inter drwx------ 2 root root 4,0K Jan 13 22:37 keys -rwxr-xr-x 1 root root 302 Dez 25 19:27 list-crl -rw-r--r-- 1 root root 7,7K Dez 25 19:27 openssl-0.9.6.cnf -rw-r--r-- 1 root root 8,3K Dez 25 19:27 openssl-0.9.8.cnf -rw-r--r-- 1 root root 8,2K Dez 25 19:27 openssl-1.0.0.cnf -rwxr-xr-x 1 root root 13K Dez 25 19:27 pkitool -rwxr-xr-x 1 root root 1,1K Dez 25 19:27 revoke-full -rwxr-xr-x 1 root root 178 Dez 25 19:27 sign-req -rw------- 1 root root 636 Dez 25 19:32 ta.key -rw-r--r-- 1 root root 2,1K Dez 25 19:27 vars -rwxr-xr-x 1 root root 740 Dez 25 19:27 whichopensslcnf
Die Datei vars bearbeiten mit einem beliebigen Editor:
nano vars
Und ändern den Bereich nach seinen Wünschen ab:
Original: export KEY_COUNTRY="US" export KEY_PROVINCE="CA" export KEY_CITY="SanFrancisco" export KEY_ORG="Fort-Funston" export KEY_EMAIL="me@myhost.mydomain" export KEY_OU="MyOrganizationalUnit" Änderung: export KEY_COUNTRY="DE" export KEY_PROVINCE="Hessen" export KEY_CITY="Babenhausen" export KEY_ORG="Firmenname oder sonst was" export KEY_EMAIL="DEINE@EMAIL.ADRESSE" export KEY_OU="HOSTENAME DEINES SERVER"
Die Datei abspeichern mit strg +o
Man kann jetzt wie im alten HowTo vorgehen und die alten Scripte nutzen oder man nutzt das pkitool.
Um mal eine Überblick zu bekommen kann man das tool mal ausführen und bekommt damit auch gleiche eine Anleitung sowie alle Optionen.
./pkitool pkitool 2.0 Usage: pkitool [options...] [common-name] Options: --batch : batch mode (default) --keysize : Set keysize size : size (default=1024) --interact : interactive mode --server : build server cert --initca : build root CA --inter : build intermediate CA --pass : encrypt private key with password --csr : only generate a CSR, do not sign --sign : sign an existing CSR --pkcs12 : generate a combined PKCS#12 file --pkcs11 : generate certificate on PKCS#11 token lib : PKCS#11 library slot : PKCS#11 slot id : PKCS#11 object id (hex string) label : PKCS#11 object label Standalone options: --pkcs11-slots : list PKCS#11 slots lib : PKCS#11 library --pkcs11-objects : list PKCS#11 token objects lib : PKCS#11 library slot : PKCS#11 slot --pkcs11-init : initialize PKCS#11 token DANGEROUS!!! lib : PKCS#11 library slot : PKCS#11 slot label : PKCS#11 token label Notes: Please edit the vars script to reflect your configuration, then source it with "source ./vars". Next, to start with a fresh PKI configuration and to delete any previous certificates and keys, run "./clean-all". Finally, you can run this tool (pkitool) to build certificates/keys. In order to use PKCS#11 interface you must have opensc-0.10.0 or higher. Generated files and corresponding OpenVPN directives: (Files will be placed in the $KEY_DIR directory, defined in ./vars) ca.crt -> root certificate (--ca) ca.key -> root key, keep secure (not directly used by OpenVPN) .crt files -> client/server certificates (--cert) .key files -> private keys, keep secure (--key) .csr files -> certificate signing request (not directly used by OpenVPN) dh1024.pem or dh2048.pem -> Diffie Hellman parameters (--dh) Examples: pkitool --initca -> Build root certificate pkitool --initca --pass -> Build root certificate with password-protected key pkitool --server server1 -> Build "server1" certificate/key pkitool client1 -> Build "client1" certificate/key pkitool --pass client2 -> Build password-protected "client2" certificate/key pkitool --pkcs12 client3 -> Build "client3" certificate/key in PKCS#12 format pkitool --csr client4 -> Build "client4" CSR to be signed by another CA pkitool --sign client4 -> Sign "client4" CSR pkitool --inter interca -> Build an intermediate key-signing certificate/key Also see ./inherit-inter script. pkitool --pkcs11 /usr/lib/pkcs11/lib1 0 010203 "client5 id" client5 -> Build "client5" certificate/key in PKCS#11 token Typical usage for initial PKI setup. Build myserver, client1, and client2 cert/keys. Protect client2 key with a password. Build DH parms. Generated files in ./keys : [edit vars with your site-specific info] source ./vars ./clean-all ./build-dh -> takes a long time, consider backgrounding ./pkitool --initca ./pkitool --server myserver ./pkitool client1 ./pkitool --pass client2 Typical usage for adding client cert to existing PKI: source ./vars ./pkitool client-new
Um es kurz zu machen benötigt man aber nur folgende Reihenfolge durch zu führen:
source ./vars ./clean-all ./build-dh -> takes a long time, consider backgrounding ./pkitool --initca ./pkitool --server myserver ./pkitool client1
Da wir die Datei schon angepasst haben kann man erstmal mit
source ./vars
die Variablen festlegen.
Durch clean-all werden eventuell vorhandene Keys gelöscht und MUSS ausgeführt werden aber das musste man vorher schon.
./clean-all
Das nächste Script erstellt uns den DH Key zum Verschlüsseln Kommunikation
./build-dh
Nun wir das CA Root Zertifikat erstellt
./pkitool --initca
Und als nächstes das Server Zertifikat
./pkitool --server myserver #kann frei gewählt werden
Jetzt kann man für seine Clients die Zertifikate erstellen
./pkitool client1 #hostanme des Clients nutzen
Ich nutze immer den Hostname des Clients da dies für bestimmte funktionen von nöten ist und ich habe eine klare zuweise. (Laptop, Handy,PC)
Diesen Befehl kann man für alle seine Clients wiederholen, man ändert nur den Namen
./pkitool pc ./pkitool handy ./pkitool laptop
Und jetzt die “große” änderung, da dies vorher leider nur mit eigene Scripten ging
source ./vars ./pkitool client-new
Man muss source ./vars ausführen und kann danach wieder neue Keys erstellen für neue Clients.
Server Config:
server.conf port 1194 proto udp dev tun ca keys/ca.crt cert keys/computer-babenhausen.de.crt key keys/computer-babenhausen.de.key dh keys/dh2048.pem server 192.168.1.0 255.255.255.0 ifconfig-pool-persist ipp.txt client-config-dir ccd route 192.168.1.0 255.255.255.0 push "redirect-gateway 62.138.16.1 def1" push "dhcp-option DNS 194.150.168.168" push "dhcp-option DNS 85.214.20.141" keepalive 10 120 tls-auth keys/ta.key 0 cipher AES-256-CBC comp-lzo max-clients 10 user nobody group nogroup persist-key persist-tun status /etc/openvpn/log/openvpn-status.log log openvpn.log log-append openvpn.log verb 4 tcp-queue-limit 512 tun-mtu 1500 bcast-buffers 4096 txqueuelen 1000 sndbuf 393216 rcvbuf 393216 push "sndbuf 393216" push "rcvbuf 393216"
Was es nicht mehr gibt oder nicht mehr geht ist das Login Plugin, die Authentifizierung läuft nur noch über die Keys, also keine Keys kein Zugang.
Die Werte:
bcast-buffers 4096 txqueuelen 1000 sndbuf 393216 rcvbuf 393216 push "sndbuf 393216" push "rcvbuf 393216"
Habe ich hinzugefügt und den Paketverlust über den VPN zu verringern , ohne diese hat man leider einen recht hohen Paketverlust.
Unter Win7 sollte man sich auch über die Webseite von OpenVPN den TAP Treiber 9.0 oder jede andere Webseite benutzen und nicht 9.01 der sorgt auch für Packetverluste.
Alles andere kann auch über meine alte Anleitung gefunden werden.
Wer sich fragt warum ich keine Passwort Datei erstellt habe bzw. kein für das Zertifikat habe ?
Nutzt man OpenVPN als Service und die Keychain wird erneuert (alle 30min.) muss man jedesmal das Passwort neu eingeben, beim Service kommt dazu aber keine Abfrage daher geht die VPN Verbindung danach down.
Das gleiche gilt bei der nutzung des Clients nur das hier die abfrage kommt und man muss alle 30 min. das Passwort eingeben.
Damit sind wir auch wieder am ende.
Wie immer bei Fragen oder sonstigem einen Kommentar hinterlassen.
Eurer DocSchneidi