Outils pour utilisateurs

Outils du site


documentation:technique:openvpn:client

Ceci est une ancienne révision du document !


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 incrémenté à chaque nouvelle souscription VPN.

Générer un certificat et une clé privée

Cette étape est à réaliser sur le poste du client.

Sous GNU/Linux

Pré-requis

Assurez-vous d'avoir les paquets suivants d'installés :

  • openvpn
  • easy-rsa

Si vous n'êtes pas sous Debian, pour faciliter la mise en place de l'environnement easy-rsa, il vous faudra télécharger en plus le script make-cadir (modifié depuis le script du paquet Debian).

Création du certificat et de la clé

  1. Lancer un terminal. Avec votre compte utilisateur, placez-vous dans un répertoire de votre choix (par exemple dans ~/Documents/Mycélium/VPN)
  2. 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
  3. 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
  4. 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

Lors de l’exécution de la commande ./easyrsa gen-req vous devez indiquer un Common Name (CN). Attention de saisir un CN indentique à NOM_CLIENT. En particulier, éviter les caractères spéciaux.

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.

  1. Copier la requête de signature de certificat du client :
    scp pki/reqs/NOM_CLIENT.req openvpn:/tmp/
  2. 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
  3. 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.

TODO Discuter et définir d'une façon d'assigner les adresses IPs

TODO 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 :

  1. Dans le fichier de configuration /etc/openvpn/client/NOM_CLIENT.conf, ajoutez la ligne suivante :
    askpass NOM_CLIENT.auth
  2. Avec votre éditeur favori, créez le fichier /etc/openvpn/client/NOM_CLIENT.auth qui ne contiendra que votre mot de passe.
  3. Réglez les permissions pour que les fichiers ne soit lisible que par root :
    sudo chmod 600 /etc/openvpn/client/NOM_CLIENT.*
documentation/technique/openvpn/client.1670081184.txt.gz · Dernière modification : 2022/12/03 16:26 de sragons

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki