Table des matières

Installation et configuration d'un serveur OpenVPN

Suite a un problème d'utilisation sur Ubuntu 8.10, la génération des certificats ne fonctionne pas. Le script “vars” n'exporte apparemment pas les variables vers le shell. Je vais tester et réactualiser pour Ubuntu 9.04

Installation de OpenVPN

Dans un premier temps, vous devez installer l'application du serveur.

sudo aptitude install openvpn

La c'est installé. Il faut maintenant configurer le serveur VPN

Configuration de OpenVPN

Pour fonctionner le serveur Open VPN a besoin de clefs de chiffrage.

Ces clef sont généré pas OpenSSL grâce a des scripts fournis avec OpenVPN sous le nom de Easy-RSA.

Ces scrpts son disponible dans le répertoire : /usr/share/doc/openvpn/examples/easy-rsa/2.0/

Configuration et initialisation de Easy-RSA

Il faut copier ces fichiers dans un dossier pour éviter qu'une prochaine mise a jours du paquet n'écrasent des fichiers modifiés.

mkdir ~/easy-rsa
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/* ~/easy-rsa/
cd ~/easy-rsa

Il faut ensuite éditer le fichier “vars”

vi vars

ce qui donne

# easy-rsa parameter settings

# This variable should point to
# the top level of the easy-rsa
# tree.
export EASY_RSA="`pwd`"

#
# This variable should point to
# the requested executables
#
export OPENSSL="openssl"
export PKCS11TOOL="pkcs11-tool"
export GREP="grep"


# This variable should point to
# the openssl.cnf file included
# with easy-rsa.
export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`

# Edit this variable to point to
# your soon-to-be-created key
# directory.
#
# WARNING: clean-all will do
# a rm -rf on this directory
# so make sure you define
# it correctly!
export KEY_DIR="$EASY_RSA/keys"

# Issue rm -rf warning
echo NOTE: If you run ./clean-all, I will be doing a rm -rf on $KEY_DIR

# PKCS11 fixes
export PKCS11_MODULE_PATH="dummy"
export PKCS11_PIN="dummy"

# Increase this to 2048 if you
# are paranoid.  This will slow
# down TLS negotiation performance
# as well as the one-time DH parms
# generation process.
export KEY_SIZE=1024

# In how many days should the root CA key expire?
export CA_EXPIRE=3650

# In how many days should certificates expire?
export KEY_EXPIRE=3650

# These are the default values for fields
# which will be placed in the certificate.
# Don't leave any of these fields blank.
export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"

Le but n'était pas de refaire la documentation officiel de OpenVPN, voici le stricte minimum a modifier sont les lignes : (exemple inclus)

export EASY_RSA="/home/pasroot/easy-rsa"
export KEY_COUNTRY="FR"
export KEY_PROVINCE="FR"
export KEY_CITY="Paris"
export KEY_ORG="Ma societe"
export KEY_EMAIL="monmail@masociete.fr"

Génération du certificat racine

Il faut générer un certificat racine qui servira a signer les autres certificats. Ce certificat “racine” sera présent sur chaque machine

Génération du certificat serveur

Il faut ensuite un certificat pour le serveur ainsi que le fichier de DH.

Génération des certificat clients

Et bien entendu un certificat par client qui peut se connecter au serveur.

Dans la configuration du serveur OpenVPN, Il est possible d'autoriser un même certificat a se connecté plusieurs fois. Mais c'est très fortement déconseillé pour des raisons de sécurité.

configuration du serveur

configuration d'un client

Notes

Si votre serveur contient un firewall, n'oubliez pas d'ouvrir le port configuré dans la configuration du serveur OpenVPN. (par défaut le port 1194 en UDP)