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
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
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.
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
Unter dem Verzeichnis C:\Programme\OpenVPN\config müssen sich folgende Dateien befinden:
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
Anleitung für eine Net2Net-Verbindung:
weitere Infos:
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
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"
#!/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
#!/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}
#!/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
#!/bin/bash # generate a CRL . /etc/openssl/vars openssl ca -gencrl -out crl.pem -config $KEY_CONFIG
#!/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