Outils pour utilisateurs

Outils du site


documentation:technique:openvpn:1-pki-client

Ceci est une ancienne révision du document !


Création de la clé PKI coté client

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.

documentation/technique/openvpn/1-pki-client.1670185672.txt.gz · Dernière modification : 2022/12/04 21:27 de sragons

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki