Ceci est une ancienne révision du document !
Table des matières
Client OpenVPN
Cette page décrit comment configurer un nouveau client VPN, de sa machine à notre serveur.
Avant de vous lancer, il faut définir ces variables et les remplacer dans cette page :
NOM_CLIENT
: le nom d'adhérent·e, suivi optionnellement d'un nom au choix. Par exemple, pour l'adhérent⋅e camille :camille
,camille-maison
,camille-autre
.IP4_CLIENT
: l'adresse IPv4 qu'on va assigner à ce client VPN, dans notre plage IP (80.67.162.x), oùx
est le numéro d'adhérent·e Mycélium.
Générer un certificat et une clé privée
Cette étape est à réaliser sur le poste du client.
Sous Debian Stretch et plus
Pré-requis
Création du certificat et de la clé
- Lancer un terminal. Avec votre compte utilisateur, placez-vous dans un répertoire de votre choix (par exemple dans
~/Documents/Mycélium/VPN
) - Créer le dossier qui contiendra les certificats avec easy-rsa, s'y rendre et initialiser l'environnement :
make-cadir ./client-ca cd ./client-ca ./easyrsa init-pki
- Créer le certificat et la clé du client :
- soit avec une phrase de passe, qui vous sera demandée et qui sera à saisir à chaque connexion au serveur VPN :
./easyrsa gen-req NOM_CLIENT
- soit sans chiffrer la clé privée avec un mot de passe :
./easyrsa gen-req NOM_CLIENT nopass
- Puis validez la suite des informations demandées.
À la fin, on se retrouve avec un dossier pki/
, qui contient au moins :
- la clé privée du client :
pki/private/NOM_CLIENT.key
- la requête de signature de certificat du client :
pki/reqs/NOM_CLIENT.req
Signer le certificat du client et le créer sur le serveur
Cette étape est à réaliser sur le conteneur openvpn, où se trouve notre CA intermédiaire pour le VPN.
- Copier la requête de signature de certificat du client :
scp pki/reqs/NOM_CLIENT.req openvpn:/tmp/
- Se connecter sur le conteneur et créer le client dans OpenVPN :
ssh openvpn manage-vpn create NOM_CLIENT -r /tmp/NOM_CLIENT.req -4 IP4_CLIENT
- Récupérer le profil OpenVPN généré pour le client sur votre machine :
scp openvpn:/tmp/NOM_CLIENT.ovpn .
Vous aurez besoin du mot de passe de notre Certificat d'Autorité, il est situé dans le password store mycelium-pass[1][2], sous le libellé mycelium/openvpn/ca
.
Vous pouvez également communiquer à l'adhérent⋅e sa clé signée, qui se trouve dans /etc/openvpn/easy-rsa/pki/issued/NOM_CLIENT.crt
sur le conteneur openvpn. Ce fichier serait alors à placer dans son dossier pki/signed
, créé préalablement.
Discuter et définir d'une façon d'assigner les adresses IPs
Définir également l'adresse IPv6
Configurer OpenVPN sur le client
Le profil OpenVPN récupéré précédemment est à transmettre à l'adhérent⋅e. Pour que ce fichier soit complet, il reste à ajouter sa clé privée à la fin, dans une balise <key></key>
. Sous bash, cela peut se faire avec la commande suivante dans le dossier où se trouve l'environnement easy-rsa :
{ echo '<key>'; cat pki/private/NOM_CLIENT.key; echo '</key>'; } >> NOM_CLIENT.ovpn
Sous Gnome avec NetworkManager
Pré-requis sous Debian :
On peut ensuite ajouter une nouvelle connexion de type OpenVPN et importer le profil généré précédemment.
Comme service avec systemd
Pré-requis sous Debian :
On peut ensuite copier le profil généré précédemment dans le dossier /etc/openvpn/client
en le renommant en NOM_CLIENT.conf
.
Le client OpenVPN peut recevoir les informations liées au serveur DNS, mais n'est pas capable nativement de les appliquer. Il faudra pour cela suivre les instructions que vous trouverez dans le fichier de configuration.
Démarrer le tunnel manuellement
Pour démarrer le client VPN manuellement, vous pouvez utiliser le service systemd dédié en exécutant :
sudo systemctl start openvpn-client@NOM_CLIENT.service
Si vous avez une phrase de passe, il vous faudra aussi exécuter :
sudo systemd-tty-ask-password-agent
Établir le tunnel au démarrage de la machine
Il suffit d'activer le service systemd dédié en exécutant :
sudo systemctl enable openvpn-client@NOM_CLIENT.service
Si vous avez une phrase de passe, il vous faudra aussi suivre les étapes suivantes pour la stocker et ne pas avoir à la saisir :
- Dans le fichier de configuration
/etc/openvpn/client/NOM_CLIENT.conf
, ajoutez la ligne suivante :askpass NOM_CLIENT.auth
- Avec votre éditeur favori, créez le fichier
/etc/openvpn/client/NOM_CLIENT.auth
qui ne contiendra que votre mot de passe. - Réglez les permissions pour que les fichiers ne soit lisible que par root :
sudo chmod 600 /etc/openvpn/client/NOM_CLIENT.*