OpenVPN installieren

Quellen:

apt-get install openssl openvpn

Falls bei der Installation nicht zurückgefragt wird, kann es sein, dass openvpn manuel konfiguriert werden muss.

dpkg-reconfigure -plow -fdialog openvpn

⇒ ab hier kann auch einfach das Skript /usr/local/corvent/rsa/install ausgeführt werden.

Die ursprünglichen Skripte stammen aus dem Paket openvpn und befinden sich im Verzeichnis /usr/share/doc/openvpn/examples/easy-rsa

Manuelle Konfiguration

mkdir /etc/openssl
cp /usr/share/doc/openvpn/examples/easy-rsa/openssl.cnf.gz /etc/openssl/
gunzip /etc/openssl/openssl.cnf.gz
touch /etc/openssl/index.txt
echo 01 > /etc/openssl/serial

Wir benötigen eine Diffie Hellmann Datei, was auch immer das ist...

/usr/local/corvent/rsa/build-dh

Jetzt muss eine CA (Certificate Authority) erstellt werden. Mit diesem Zertifikat werden alle weiteren siginiert. Damit können beide Instanzen sichergehen, dass sie mit dem gewünschten Partner komunizieren.

/usr/local/corvent/rsa/build-ca

Für alle Angaben können die Vorgabewerte benutzt werden.
Nur der ‘Common Name’ muss einen eindeutigen Wert haben. Das gilt auch für jedes weitere Zertifikat, dass wir erstellen.
z.B. Common Name: corvent.ch

Jetzt benötigen wir ein Zertifikat für den Server.

/usr/local/corvent/rsa/build-serverkey
# Common Name: server
# Sign the certificate? [y/n]:y
# 1 out of 1 certificate requests certified, commit? [y/n]y

Die erstellten Zertifikate können ohne weitere Verwendung von Passwörtern verwendet werden und der Server wird diese solange aakzeptieren, wie diese gültig sind, also per Voreinstellung ein Jahr lang. Damit wir erstellte Zertifikate auch wieder sperren können, benötigen wir eine CRL (Certificate Revokation List).

/usr/local/corvent/rsa/make-crl crl.pem

Jetzt können wir den Server starten

/etc/init.d/openvpn start

Benutzer Zertifikate

Nun benötigen wir für jeden Benutzer ein eigenes Zertifikat. Jedes Zertifikat kann gleichzeitig nur einmal benutzt werden.

/usr/local/corvent/rsa/build-key client
# Common Name: [Eindeutiger Benutzername]
# Sign the certificate? [y/n]:y
# 1 out of 1 certificate requests certified, commit? [y/n]y

Die so erstellten Dateien client.key und client.crt werden zusammen mit der ca.crt jedem Benutzer über eine sichere Verbindung zur Verfügung gestellt.

Zertifikate sperren

Damit wir ein Zertifikat wieder sperren können benötigen wir den Common Name. Mit diesem können wir in der Datei index.txt die ID für die .pem Datei ermitteln. Nun können wir dieses Zertifikat sperren:

/usr/local/corvent/rsa/revoke-crt 01.pem

Allerdings muss danach jedesmal die CRL neu erstellt werden:

/usr/local/corvent/rsa/make-crl

———— ab hier notizen: skript um zu revoken:
#!/bin/bash

. /etc/openssl/vars openssl ca -gencrl -crlhours 1 -out crl.pem -config $KEY_CONFIG

crl.pem anzeigen:
openssl crl -in crl.pem -noout -text

Windows Dateien

Unter dem Verzeichnis C:\Programme\OpenVPN\config müssen sich folgende Dateien befinden:

  • ca.crt
  • client.crt
  • client.key
  • firma.ovpn

firma.ovpn

remote vpn.firma.ch
client
dev tun

ca ca.crt
cert client.crt
key client.key

;fragment 1300
;mssfix

nobind
persist-key
persist-tun
ping 10

;comp-lzo
verb 4
mute 10

net-to-net

Linux Server

/etc/openvpn/openvpn.conf

dev tun
server 10.3.0.0 255.255.255.0

push "route 192.168.1.0 255.255.255.0"
push "dhcp-option DNS 192.168.1.1"
push "dhcp-option WINS 192.168.1.1"

# Our up script will establish routes
# once the VPN is alive.
#up ./office.up

dh /etc/openssl/dh1024.pem
ca /etc/openssl/ca.crt
cert /etc/openssl/server.crt
key /etc/openssl/server.key
crl-verify /etc/openssl/crl.pem

keepalive 10 120
persist-key
persist-tun

; comp-lzo
verb 3

/etc/openssl/vars

export KEY_CONFIG=/etc/openssl/openssl.cnf
export KEY_DIR=/etc/openssl
export KEY_SIZE=1024
export KEY_VALID=365

export KEY_COUNTRY=CH
export KEY_PROVINCE=ZH
export KEY_CITY=Winterthur
export KEY_ORG="Corvent GmbH"
export KEY_EMAIL="info@corvent.ch"

Skripte

/usr/local/corvent/rsa/build-ca

#!/bin/bash
# Build a root certificate

#if [ -z "$KEY_DIR" ] ; then
  . /etc/openssl/vars
#fi

cd $KEY_DIR && \
openssl req -days 3650 -nodes -new -x509 -keyout ca.key -out ca.crt -config $KEY_CONFIG

/usr/local/corvent/rsa/build-dh

#!/bin/bash
# Build Diffie-Hellman parameters for the server side
# of an SSL/TLS connection.

. /etc/openssl/vars
openssl dhparam -out ${KEY_DIR}/dh${KEY_SIZE}.pem ${KEY_SIZE}

/usr/local/corvent/rsa/build-key

#!/bin/bash
# Make a certificate/private key pair using a locally generated
# root certificate.

. /etc/openssl/vars

if test $# -ne 1; then
  echo "usage: build-key <name>";
  exit 1
fi

cd $KEY_DIR && \
openssl req -days $KEY_VALID -nodes -new -keyout $1.key -out $1.csr -config $KEY_CONFIG && \
openssl ca -days $KEY_VALID -out $1.crt -in $1.csr -config $KEY_CONFIG
# Server Key ???
# openssl ca -days 3650 -out $1.crt -in $1.csr -extensions server -config $KEY_CONFIG
rm $KEY_DIR/$1.csr
rm $KEY_DIR/*.old

/usr/local/corvent/rsa/make-crl

#!/bin/bash
# generate a CRL

. /etc/openssl/vars
openssl ca -gencrl -out crl.pem -config $KEY_CONFIG

/usr/local/corvent/rsa/revoke-crt

#!/bin/bash
# revoke a certificate

. /etc/openssl/vars
if test $# -ne 1; then
  echo "usage: revoke-crt <file.pem>";
  exit 1
fi
openssl ca -revoke $1 -config $KEY_CONFIG
 
linux/server/openvpn.txt · Zuletzt geändert: 08.09.2009 11:47 von tylmann