Ceci est une ancienne révision du document !
Table des matières
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é
- 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
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.
- 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.