Tutorial

Comment configurer un serveur OpenVPN sur Ubuntu 18.04

Published on February 26, 2020
Default avatar

By Mark Drake

Manager, Developer Education

Français
Comment configurer un serveur OpenVPN sur Ubuntu 18.04

Une version précédente de ce tutoriel a été rédigée par Justin Ellingwood

Introduction

Vous voulez accéder à Internet en toute sécurité depuis votre smartphone ou votre ordinateur portable connecté à un réseau non sécurisé tel que le WiFi d’un hôtel ou d’un café ? Un réseau privé virtuel (VPN) vous permet de traverser des réseaux non fiables de manière privée et sécurisée comme si vous étiez sur un réseau privé. Le trafic est issu du serveur VPN et continue son voyage jusqu’à destination.

Combinée aux connexions HTTPS, cette configuration vous permet de sécuriser vos connexions et transactions sans fil. Vous pouvez contourner les restrictions géographiques et la censure, et protéger votre emplacement et tout trafic HTTP non chiffré contre un réseau non fiable.

OpenVPN est une solution SSL (Secure Socket Layer) VPN complète et open source qui s’adapte à un large éventail de configurations. Dans ce tutoriel, vous allez configurer un serveur OpenVPN sur un serveur Ubuntu 18.04, puis configurer l’accès à celui-ci depuis Windows, macOS, iOS et/ou Android. Ce tutoriel vise à rendre les étapes d’installation et de configuration aussi simples que possible pour chacune de ces configurations.

Remarque : si vous prévoyez de configurer un serveur OpenVPN sur une Droplet DigitalOcean, sachez que, comme de nombreux fournisseurs d’hébergement, nous facturons les dépassements de bande passante. Veillez donc à surveiller la quantité de trafic gérée par votre serveur.

Consultez cette page pour plus d’informations.

Conditions préalables

Pour suivre ce tutoriel, vous devrez avoir accès à un serveur Ubuntu 18.04 pour héberger votre service OpenVPN. Vous devrez configurer un utilisateur non root avec privilèges sudo avant de commencer ce guide. Vous pouvez suivre notre guide de configuration initiale de serveur Ubuntu 18.04 pour configurer un utilisateur avec les permissions appropriées. Le tutoriel joint permettra également de mettre en place un pare-feu, supposé rester en place tout au long de ce guide.

En outre, vous aurez besoin d’une machine distincte qui servira d’autorité de certification (AC). Bien qu’il soit techniquement possible d’utiliser votre serveur OpenVPN ou votre machine locale comme AC, ce n’est pas recommandé car cela expose votre VPN à certaines failles de sécurité. Selon la documentation officielle d’OpenVPN, vous devez placer votre AC sur une machine autonome qui est dédiée à l’importation et à la signature des demandes de certificats. Ce guide suppose donc que votre AC se trouve sur un serveur Ubuntu 18.04 distinct qui possède également un utilisateur non root avec privilèges sudo et un pare-feu de base.

Veuillez noter que si vous désactivez l’authentification par mot de passe lors de la configuration des serveurs, vous risquez de rencontrer des difficultés lors du transfert de fichiers entre ces serveurs plus loin dans ce guide. Pour résoudre ce problème, vous pourrez réactiver l’authentification par mot de passe sur chaque serveur. Sinon, vous pourrez générer une paire de clés SSH pour chaque serveur, puis ajouter la clé SSH publique du serveur OpenVPN au fichier authorized_keys de la machine AC et vice versa. Consultez Comment configurer des clés SSH sur Ubuntu 18.04 pour obtenir des instructions sur la manière d’exécuter l’une ou l’autre de ces solutions.

Lorsque ces conditions préalables sont remplies, vous pouvez passer à l’étape 1 de ce tutoriel.

Étape 1 - Installation d’OpenVPN et d’EasyRSA

Pour commencer, mettez à jour l’index des packages de votre** serveur VPN** et installez OpenVPN. OpenVPN est disponible dans les référentiels par défaut d’Ubuntu, vous pouvez donc utiliser apt pour l’installation :

  1. sudo apt update
  2. sudo apt install openvpn

OpenVPN est un TLS/SSL VPN. Cela signifie qu’il utilise des certificats afin de chiffrer le trafic entre le serveur et les clients. Pour émettre des certificats de confiance, vous devez mettre en place votre propre autorité de certification (AC). Pour ce faire, nous téléchargerons la dernière version d’EasyRSA, que nous utiliserons pour construire l’infrastructure à clés publiques (PKI) de notre AC, à partir du référentiel officiel GitHub du projet.

Comme mentionné dans les conditions préalables, nous construirons l’AC sur un serveur distinct. La raison de cette approche est la suivante : si un attaquant parvenait à infiltrer votre serveur, il pourrait accéder à votre clé privée de l’AC et l’utiliser pour émettre de nouveaux certificats, ce qui lui donnerait accès à votre VPN. Par conséquent, la gestion de l’AC à partir d’une machine distincte permet d’empêcher les utilisateurs non autorisés d’accéder à votre VPN. Notez également qu’il est recommandé, par mesure de précaution supplémentaire, de laisser le serveur de l’AC éteint lorsqu’il n’est pas utilisé pour signer des clés.

Pour commencer à construire l’infrastructure de l’AC et de la PKI, utilisez wget pour télécharger la dernière version d’EasyRSA à la fois sur votre machine de l’AC et sur votre serveur OpenVPN. Pour obtenir la dernière version, consultez la page Releases du projet GitHub officiel EasyRSA, copiez le lien de téléchargement du fichier se terminant par .tgz, puis collez-le dans la commande suivante :

  1. wget -P ~/ https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.4/EasyRSA-3.0.4.tgz

Extrayez ensuite le tarball :

  1. cd ~
  2. tar xvf EasyRSA-3.0.4.tgz

Vous avez installé tous les logiciels requis sur votre serveur et votre machine AC. Continuez ci-dessous pour configurer les variables utilisées par EasyRSA et mettre en place un répertoire AC, à partir duquel vous générerez les clés et les certificats requis par votre serveur et vos clients pour accéder au VPN.

Étape 2 - Configuration des variables EasyRSA et construction de l’AC

EasyRSA est installé avec un fichier de configuration que vous pouvez modifier pour définir un certain nombre de variables pour votre AC.

Sur votre machine AC, naviguez jusqu’au répertoire EasyRSA :

  1. cd ~/EasyRSA-3.0.4/

Dans ce répertoire, vous trouverez un fichier nommé vars.example. Faites une copie de ce fichier, et nommez la copie vars sans extension de fichier :

  1. cp vars.example vars

Ouvrez ce nouveau fichier en utilisant votre éditeur de texte préféré :

  1. nano vars

Trouvez les paramètres qui définissent les champs par défaut pour les nouveaux certificats. Ils ressembleront à cela :

~/EasyRSA-3.0.4/vars
. . .

#set_var EASYRSA_REQ_COUNTRY    "US"
#set_var EASYRSA_REQ_PROVINCE   "California"
#set_var EASYRSA_REQ_CITY       "San Francisco"
#set_var EASYRSA_REQ_ORG        "Copyleft Certificate Co"
#set_var EASYRSA_REQ_EMAIL      "me@example.net"
#set_var EASYRSA_REQ_OU         "My Organizational Unit"

. . .

Décommentez ces lignes et mettez à jour les valeurs mises en évidence selon vos préférences, mais ne les laissez pas vides :

~/EasyRSA-3.0.4/vars
. . .

set_var EASYRSA_REQ_COUNTRY    "US"
set_var EASYRSA_REQ_PROVINCE   "NewYork"
set_var EASYRSA_REQ_CITY       "New York City"
set_var EASYRSA_REQ_ORG        "DigitalOcean"
set_var EASYRSA_REQ_EMAIL      "admin@example.com"
set_var EASYRSA_REQ_OU         "Community"

. . .

Lorsque vous avez terminé, enregistrez et fermez le fichier.

Dans le répertoire EasyRSA se trouve un script appelé easyrsa qui est utilisé pour effectuer diverses tâches liées à la construction et à la gestion de l’AC. Exécutez ce script avec l’option init-pki pour lancer l’infrastructure à clé publique sur le serveur de l’AC :

  1. ./easyrsa init-pki
Output
. . . init-pki complete; you may now create a CA or requests. Your newly created PKI dir is: /home/sammy/EasyRSA-3.0.4/pki

Ensuite, exécutez à nouveau le script easyrsa, en le faisant suivre de l’option build-ca. Cela permettra de construire l’AC et de créer deux fichiers importants - ca.crt et ca.key - qui constituent les côtés public et privé d’un certificat SSL.

  • ca.crt est le fichier de certificat public de l’AC qui, dans le contexte d’OpenVPN, est utilisé par le serveur et le client pour s’informer mutuellement qu’ils font partie du même réseau de confiance et qu’il ne s’agit pas d’une personne effectuant une attaque de l’intercepteur. Pour cette raison, votre serveur et tous vos clients auront besoin d’une copie du fichier ca.crt.
  • ca.key est la clé privée que la machine AC utilise pour signer les clés et les certificats des serveurs et des clients. Si un attaquant accède à votre AC et ensuite à votre fichier ca.key, il pourra signer des demandes de certificat et accéder à votre VPN, ce qui nuira à sa sécurité. C’est pourquoi votre fichier ca.key ne doit se trouver que sur votre machine AC et votre machine AC doit idéalement être maintenue hors ligne lorsqu’elle ne signe pas de demandes de certificat, par mesure de sécurité supplémentaire.

Si vous ne voulez pas qu’un mot de passe vous soit demandé à chaque fois que vous interagissez avec votre AC, vous pouvez exécuter la commande build-ca avec l’option nopass, comme ceci :

  1. ./easyrsa build-ca nopass

Dans la sortie, il vous sera demandé de confirmer le nom commun ou common name de votre AC :

Output
. . . Common Name (eg: your user, host, or server name) [Easy-RSA CA]:

Le nom commun est le nom utilisé pour désigner cette machine dans le contexte de l’autorité de certification. Vous pouvez saisir n’importe quelle chaîne de caractères pour le nom commun de l’AC mais, par souci de simplicité, appuyez sur ENTER (ENTRÉE) pour accepter le nom par défaut.

Votre AC est ainsi en place et prête à signer les demandes de certificat.

Étape 3 - Création du certificat, de la clé et des fichiers de chiffrement du serveur

Maintenant que vous avez une AC prête à fonctionner, vous pouvez générer une clé privée et une demande de certificat à partir de votre serveur, puis transférer la demande à votre AC pour qu’elle la signe, créant ainsi le certificat requis. Vous êtes également libre de créer des fichiers supplémentaires utilisés pendant le processus de chiffrement.

Commencez par rejoindre le répertoire EasyRSA sur votre serveur OpenVPN :

  1. cd EasyRSA-3.0.4/

De là, exécutez le script easyrsa avec l’option init-pki. Bien que vous ayez déjà exécuté cette commande sur la machine AC, il est nécessaire de l’exécuter ici car votre serveur et votre AC auront des répertoires PKI séparés :

  1. ./easyrsa init-pki

Puis exécutez à nouveau le script easyrsa, en activant cette fois l’option gen-req suivie d’un nom commun pour la machine. Encore une fois, vous êtes libre de choisir le nom que vous souhaitez, mais un nom descriptif peut être utile. Tout au long de ce tutoriel, le nom commun du serveur OpenVPN sera simplement « server ». Veillez à inclure également l’option nopass. Dans le cas contraire, le fichier de demande sera protégé par un mot de passe, ce qui pourrait entraîner des problèmes de permissions par la suite :

Remarque : si vous choisissez un nom autre que « server » ici, vous devrez adapter certaines des instructions ci-dessous. Par exemple, en copiant les fichiers générés dans le répertoire /etc/openvpn, vous devrez substituer les noms corrects. Vous devrez également modifier le fichier /etc/openvpn/server.conf ultérieurement pour pointer vers les fichiers .crt et .key corrects.

  1. ./easyrsa gen-req server nopass

Cela permettra de créer une clé privée pour le serveur et un fichier de demande de certificat appelé server.req. Copiez la clé du serveur dans le répertoire /etc/openvpn/ :

  1. sudo cp ~/EasyRSA-3.0.4/pki/private/server.key /etc/openvpn/

En utilisant une méthode sécurisée (comme SCP, dans notre exemple ci-dessous), transférez le fichier server.req sur votre machine AC :

  1. scp ~/EasyRSA-3.0.4/pki/reqs/server.req sammy@your_CA_ip:/tmp

Puis, sur votre machine AC, naviguez jusqu’au répertoire EasyRSA :

  1. cd EasyRSA-3.0.4/

En utilisant à nouveau le script easyrsa, importez le fichier server.req, en suivant le chemin du fichier avec son nom commun :

  1. ./easyrsa import-req /tmp/server.req server

Signez ensuite la demande en exécutant le script easyrsa avec l’option sign-req, suivi du type de demande et du nom commun. Le type de requête peut être soit client soit server, donc pour la requête de certificat du serveur OpenVPN, assurez-vous d’utiliser le type de requête server :

  1. ./easyrsa sign-req server server

Dans la sortie, il vous sera demandé de vérifier que la demande provient d’une source fiable. Tapez yes puis appuyez sur ENTER pour confirmer :

You are about to sign the following certificate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.

Request subject, to be signed as a server certificate for 3650 days:

subject=
    commonName                = server


Type the word 'yes' to continue, or any other input to abort.
  Confirm request details: yes

Si vous avez chiffré votre clé AC, on vous demandera votre mot de passe à ce stade.

Ensuite, transférez le certificat signé sur votre serveur VPN en utilisant une méthode sécurisée :

  1. scp pki/issued/server.crt sammy@your_server_ip:/tmp

Avant de vous déconnecter de votre machine AC, transférez également le fichier ca.crt sur votre serveur :

  1. scp pki/ca.crt sammy@your_server_ip:/tmp

Ensuite, reconnectez-vous à votre serveur OpenVPN et copiez les fichiers server.crt et ca.crt dans votre répertoire /etc/openvpn/ :

  1. sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/

Naviguez jusqu’à votre répertoire EasyRSA :

  1. cd EasyRSA-3.0.4/

De là, créez une clé Diffie-Hellman forte à utiliser lors de l’échange de clés en tapant :

  1. ./easyrsa gen-dh

Cela peut prendre quelques minutes. Une fois que c’est fait, générez une signature HMAC pour renforcer les capacités de vérification de l’intégrité TLS du serveur :

  1. openvpn --genkey --secret ta.key

Lorsque la commande est terminée, copiez les deux nouveaux fichiers dans votre répertoire /etc/openvpn/ :

  1. sudo cp ~/EasyRSA-3.0.4/ta.key /etc/openvpn/
  2. sudo cp ~/EasyRSA-3.0.4/pki/dh.pem /etc/openvpn/

Tous les fichiers de certificats et de clés nécessaires à votre serveur ont été générés. Vous êtes prêt à créer les certificats et clés correspondants que votre machine cliente utilisera pour accéder à votre serveur OpenVPN.

Étape 4 - Création d’une paire certificat/clé client

Bien que vous puissiez générer une clé privée et une demande de certificat sur votre machine cliente, puis l’envoyer à l’autorité de certification pour qu’elle la signe, ce guide décrit un processus de génération de la demande de certificat sur le serveur. L’avantage est que nous pouvons créer un script qui générera automatiquement des fichiers de configuration client contenant toutes les clés et tous les certificats requis. Cela vous évite d’avoir à transférer les clés, les certificats et les fichiers de configuration aux clients et rationalise le processus pour rejoindre le VPN.

Nous générerons une seule paire certificat/clé client dans ce guide. Si vous avez plus d’un client, vous pouvez répéter ce processus pour chacun d’entre eux. Veuillez noter, cependant, que vous devrez transmettre une valeur de nom unique au script pour chaque client. Tout au long de ce tutoriel, la première paire certificat/clé est appelée client1.

Commencez par créer une structure de répertoire dans votre répertoire d’origine pour stocker les fichiers du certificat et de la clé client :

  1. mkdir -p ~/client-configs/keys

Étant donné que vous stockerez les paires certificats/clés et les fichiers de configuration de vos clients dans ce répertoire, vous devriez verrouiller ses autorisations dès maintenant par mesure de sécurité :

  1. chmod -R 700 ~/client-configs

Ensuite, retournez dans le répertoire EasyRSA et exécutez le script easyrsa avec les options gen-req et nopass, ainsi que le nom commun du client :

  1. cd ~/EasyRSA-3.0.4/
  2. ./easyrsa gen-req client1 nopass

Appuyez surENTERpour confirmer le nom commun. Ensuite, copiez le fichier client1.key dans le répertoire /client-configs/keys/ que vous avez créé précédemment :

  1. cp pki/private/client1.key ~/client-configs/keys/

Ensuite, transférez le fichier client1.req sur votre machine AC en utilisant une méthode sécurisée :

  1. scp pki/reqs/client1.req sammy@your_CA_ip:/tmp

Connectez-vous à votre machine AC, naviguez jusqu’au répertoire EasyRSA et importez la demande de certificat :

  1. ssh sammy@your_CA_ip
  2. cd EasyRSA-3.0.4/
  3. ./easyrsa import-req /tmp/client1.req client1

Signez ensuite la demande comme vous l’avez fait pour le serveur lors de l’étape précédente. Cette fois, cependant, veillez à préciser le type de demande client :

  1. ./easyrsa sign-req client client1

Lorsque vous êtes invité à le faire, entrez yes pour confirmer que vous souhaitez signer la demande de certificat et qu’elle provient d’une source fiable :

Output
Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes

Encore une fois, si vous avez chiffré votre clé AC, vous serez invité à entrer votre mot de passe ici.

Cela créera un fichier de certificat client nommé client1.crt. Transférez ce fichier vers le serveur :

  1. scp pki/issued/client1.crt sammy@your_server_ip:/tmp

Connectez-vous via SSH à votre serveur OpenVPN et copiez le certificat client dans le répertoire /client-configs/keys/ :

  1. cp /tmp/client1.crt ~/client-configs/keys/

Ensuite, copiez également les fichiers ca.crt et ca.key dans le répertoire /client-configs/keys/ :

  1. cp ~/EasyRSA-3.0.4/ta.key ~/client-configs/keys/
  2. sudo cp /etc/openvpn/ca.crt ~/client-configs/keys/

Les certificats et les clés de votre serveur et de votre client ont tous été générés et sont stockés dans les répertoires appropriés de votre serveur. Il reste encore quelques actions à effectuer avec ces fichiers, mais elles interviendront dans une étape ultérieure. Pour l’instant, vous pouvez passer à la configuration d’OpenVPN sur votre serveur.

Étape 5 - Configuration du service OpenVPN

Maintenant que les certificats et les clés de votre client et de votre serveur ont été générés, vous pouvez commencer à configurer le service OpenVPN pour utiliser ces informations d’identification.

Commencez par copier un exemple de fichier de configuration OpenVPN dans le répertoire de configuration, puis extrayez-le afin de l’utiliser comme base pour votre installation :

  1. sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
  2. sudo gzip -d /etc/openvpn/server.conf.gz

Ouvrez le fichier de configuration du serveur dans votre éditeur de texte préféré :

  1. sudo nano /etc/openvpn/server.conf

Trouvez la section HMAC en cherchant la directive tls-auth. Cette ligne devrait déjà être décommentée, mais si elle ne l’est pas, supprimez le «** ; **» pour la décommenter :

/etc/openvpn/server.conf
tls-auth ta.key 0 # This file is secret

Ensuite, trouvez la section sur les chiffres cryptographiques en recherchant les lignes cipher commentées. Le chiffrement AES-256-CBC offre un bon niveau de cryptage et est bien pris en charge. Encore une fois, cette ligne devrait déjà être décommentée, mais si elle ne l’est pas, il suffit d’enlever le « **; **» qui la précède :

/etc/openvpn/server.conf
cipher AES-256-CBC

En dessous, ajoutez une directive auth pour sélectionner l’algorithme de synthèse des messages HMAC. À cette fin, SHA256 est un bon choix :

/etc/openvpn/server.conf
auth SHA256

Ensuite, trouvez la ligne contenant une directive dh qui définit les paramètres de Diffie-Hellman. En raison de certaines modifications récentes apportées à EasyRSA, le nom de fichier de la clé Diffie-Hellman peut être différent de celui qui figure dans le fichier d’exemple de configuration du serveur. Si nécessaire, modifiez le nom de fichier indiqué ici en supprimant le 2048 afin qu’il s’aligne sur la clé que vous avez générée à l’étape précédente :

/etc/openvpn/server.conf
dh dh.pem

Enfin, trouvez les paramètres user et group et supprimez le «** ; **» au début de chacun pour décommenter ces lignes :

/etc/openvpn/server.conf
user nobody
group nogroup

Les modifications que vous avez apportées au fichier server.conf jusqu’à présent sont nécessaires pour qu’OpenVPN puisse fonctionner. Les changements décrits ci-dessous sont facultatifs, bien qu’ils soient également nécessaires pour de nombreux cas d’utilisation courants.

(Facultatif) Modifiez le DNS pour rediriger tout le trafic par le VPN

Les paramètres ci-dessus créeront la connexion VPN entre les deux machines, mais ne forceront aucune connexion à utiliser le tunnel. Si vous souhaitez utiliser le VPN pour acheminer l’ensemble de votre trafic, vous voudrez probablement diriger les paramètres DNS vers les ordinateurs clients.

Il y a quelques directives dans le fichier server.conf que vous devez modifier pour activer cette fonctionnalité. Trouvez la section redirect-gateway et retirez le point-virgule « ; » du début de la ligne redirect-gateway pour la décommenter :

/etc/openvpn/server.conf
push "redirect-gateway def1 bypass-dhcp"

Juste en dessous, vous trouverez la section dhcp-option. Encore une fois, enlevez le «** ; **» devant les deux lignes pour les décommenter :

/etc/openvpn/server.conf
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

Cela aidera les clients à reconfigurer leurs paramètres DNS pour utiliser le tunnel VPN comme passerelle par défaut.

(Facultatif) Ajustez le port et le protocole

Par défaut, le serveur OpenVPN utilise le port 1194 et le protocole UDP pour accepter les connexions des clients. Si vous devez utiliser un autre port en raison des environnements réseau restrictifs de vos clients, vous pouvez changer l’option port. Si vous n’hébergez pas de contenu web sur votre serveur OpenVPN, le port 443 est un choix populaire car il est généralement autorisé par les règles de pare-feu.

/etc/openvpn/server.conf
# Optional!
port 443

Souvent, le protocole est également limité à ce port. Si c’est le cas, changez la valeur proto de UDP à TCP :

/etc/openvpn/server.conf
# Optional!
proto tcp

Si vous modifiez le protocole en TCP, vous devrez changer la valeur de la directive explicit-exit-notify de 1 à 0, car cette directive n’est utilisée que par UDP. Si vous ne la modifiez alors que vous utilisez le protocole TCP, des erreurs se produiront au démarrage du service OpenVPN :

/etc/openvpn/server.conf
# Optional!
explicit-exit-notify 0

Si vous n’avez pas besoin d’utiliser un port et un protocole différents, il est préférable de conserver les deux paramètres par défaut.

(Facultatif) Pointez vers des informations d’identification autres que celles par défaut

Si vous avez choisi un nom différent lors de la commande ./build-key-server précédente, modifiez les lignes cert et key que vous voyez pour pointer vers les fichiers .crt et .key appropriés. Si vous avez utilisé le nom par défaut « server », celui-ci est déjà correctement défini :

/etc/openvpn/server.conf
cert server.crt
key server.key

Lorsque vous avez terminé, enregistrez et fermez le fichier.

Après avoir passé en revue la configuration OpenVPN de votre serveur et y avoir apporté les modifications nécessaires pour votre utilisation spécifique, vous pouvez commencer à apporter quelques changements à la mise en réseau de votre serveur.

Étape 6 - Ajustement de la configuration réseau du serveur

Certains aspects de la configuration réseau du serveur doivent être modifiés afin qu’OpenVPN puisse acheminer correctement le trafic à travers le VPN. Le premier d’entre eux est le transfert IP, une méthode permettant de déterminer où le trafic IP doit être acheminé. Ceci est essentiel pour la fonctionnalité VPN que votre serveur fournira.

Ajustez le paramètre de transfert IP par défaut de votre serveur en modifiant le fichier /etc/sysctl.conf :

  1. sudo nano /etc/sysctl.conf

À l’intérieur, cherchez la ligne commentée qui définit net.ipv4.ip_forward. Supprimez le caractère «** #** » du début de la ligne pour décommenter ce paramètre :

/etc/sysctl.conf
net.ipv4.ip_forward=1

Enregistrez et fermez le fichier lorsque vous avez terminé.

Pour lire le fichier et ajuster les valeurs pour la session en cours, tapez :

  1. sudo sysctl -p
Output
net.ipv4.ip_forward = 1

Si vous avez suivi le guide de configuration initiale de serveur Ubuntu 18.04 indiqué dans les conditions préalables, vous devriez avoir un pare-feu UFW en place. Que vous utilisiez ou non le pare-feu pour bloquer le trafic indésirable (ce que vous devriez presque toujours faire), pour ce guide, vous avez besoin d’un pare-feu pour manipuler une partie du trafic entrant dans le serveur. Certaines des règles du pare-feu doivent être modifiées pour permettre le masquage, un concept iptables qui fournit à la volée une traduction dynamique des adresses réseau (NAT) pour acheminer correctement les connexions des clients.

Avant d’ouvrir le fichier de configuration du pare-feu pour ajouter les règles de masquage, vous devez d’abord trouver l’interface de réseau public de votre machine. Pour ce faire, tapez :

  1. ip route | grep default

Votre interface publique est la chaîne de caractères qui se trouve dans la sortie de cette commande et qui suit le mot « dev ». Par exemple, ce résultat montre l’interface nommée wlp11s0, qui est mise en évidence ci-dessous :

Output
default via 203.0.113.1 dev wlp11s0 proto static

Lorsque l’interface est associée à votre itinéraire par défaut, ouvrez le fichier /etc/ufw/before.rules pour ajouter la configuration appropriée :

  1. sudo nano /etc/ufw/before.rules

Les règles UFW sont généralement ajoutées à l’aide de la commande ufw. Les règles énumérées dans le fichier before.rules sont toutefois lues et mises en place avant le chargement des règles UFW conventionnelles. En haut du fichier, ajoutez les lignes mises en évidence ci-dessous. Cela permettra de définir la politique par défaut pour la chaîne POSTROUTING dans la table nat et de masquer tout trafic provenant du VPN. N’oubliez pas de remplacer wlp11s0 dans la ligne -A POSTROUTING ci-dessous par l’interface que vous avez trouvée dans la commande ci-dessus :

/etc/ufw/before.rules
#
# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
#   ufw-before-input
#   ufw-before-output
#   ufw-before-forward
#

# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to wlp11s0 (change to the interface you discovered!)
-A POSTROUTING -s 10.8.0.0/8 -o wlp11s0 -j MASQUERADE
COMMIT
# END OPENVPN RULES

# Don't delete these required lines, otherwise there will be errors
*filter
. . .

Enregistrez et fermez le fichier lorsque vous avez terminé.

Ensuite, vous devez indiquer à UFW d’autoriser également les paquets transmis par défaut. Pour ce faire, ouvrez le fichier /etc/default/ufw :

  1. sudo nano /etc/default/ufw

À l’intérieur, trouvez la directive DEFAULT_FORWARD_POLICY et changez la valeur de DROP à ACCEPT :

/etc/default/ufw
DEFAULT_FORWARD_POLICY="ACCEPT"

Enregistrez et fermez le fichier lorsque vous avez terminé.

Ensuite, ajustez le pare-feu lui-même pour permettre le trafic vers OpenVPN. Si vous n’avez pas modifié le port et le protocole dans le fichier /etc/openvpn/server.conf, vous devrez ouvrir le trafic UDP au port 1194. Si vous avez modifié le port et/ou le protocole, utilisez ici les valeurs que vous avez sélectionnées.

Au cas où vous auriez oublié d’ajouter le port SSH en suivant le tutoriel préalable, ajoutez-le également ici :

  1. sudo ufw allow 1194/udp
  2. sudo ufw allow OpenSSH

Après avoir ajouté ces règles, désactivez et réactivez UFW pour le redémarrer et charger les modifications de tous les fichiers :

  1. sudo ufw disable
  2. sudo ufw enable

Votre serveur est maintenant configuré pour gérer correctement le trafic OpenVPN.

Étape 7 - Démarrage et activation du service OpenVPN

Vous êtes enfin prêt à lancer le service OpenVPN sur votre serveur. Faites-le en utilisant l’utilitaire systemd systemctl.

Démarrez le serveur OpenVPN en spécifiant le nom de votre fichier de configuration comme variable d’instance après le nom de fichier de l’unité systemd. Le fichier de configuration de votre serveur s’appelle /etc/openvpn/server.conf, ajoutez donc @server à la fin de votre fichier d’unité lorsque vous l’appelez :

  1. sudo systemctl start openvpn@server

Vérifiez que le service a bien démarré en tapant :

  1. sudo systemctl status openvpn@server

Si tout s’est bien passé, votre sortie ressemblera à ceci :

Output
● openvpn@server.service - OpenVPN connection to server Loaded: loaded (/lib/systemd/system/openvpn@.service; disabled; vendor preset: enabled) Active: active (running) since Tue 2016-05-03 15:30:05 EDT; 47s ago Docs: man:openvpn(8) https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Process: 5852 ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/%i.conf --writepid /run/openvpn/%i.pid (code=exited, sta Main PID: 5856 (openvpn) Tasks: 1 (limit: 512) CGroup: /system.slice/system-openvpn.slice/openvpn@server.service └─5856 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/server.conf --writepid /run/openvpn/server.pid

Vous pouvez également vérifier que l’interface tun0 d’OpenVPN est disponible en tapant :

  1. ip addr show tun0

Cela produira une interface configurée :

Output
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 100 link/none inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0 valid_lft forever preferred_lft forever

Après avoir démarré le service, activez-le afin qu’il se lance automatiquement lors du démarrage du système :

  1. sudo systemctl enable openvpn@server

Votre service OpenVPN est maintenant opérationnel. Cependant, avant de pouvoir l’utiliser, vous devez créer un fichier de configuration pour la machine cliente. Ce tutoriel a déjà abordé la manière de créer des paires certificats/clés pour les clients. Dans la prochaine étape, nous montrerons comment créer une infrastructure qui générera facilement des fichiers de configuration pour les clients.

Étape 8 - Création de l’infrastructure de configuration du client

La création de fichiers de configuration pour les clients OpenVPN peut être quelque peu compliquée, car chaque client doit avoir sa propre configuration et chacun doit s’aligner sur les paramètres décrits dans le fichier de configuration du serveur. Plutôt que d’écrire un seul fichier de configuration qui ne peut être utilisé que sur un seul client, cette étape décrit un processus de construction d’une infrastructure de configuration client que vous pouvez utiliser pour générer des fichiers de configuration à la volée. Vous créerez d’abord un fichier de configuration « de base », puis un script qui vous permettra de générer des fichiers de configuration client, des certificats et des clés uniques selon les besoins.

Commencez par créer un nouveau répertoire dans lequel vous stockerez les fichiers de configuration du client dans le répertoire client-configs que vous avez créé précédemment :

  1. mkdir -p ~/client-configs/files

Ensuite, copiez un exemple de fichier de configuration client dans le répertoire client-configs pour l’utiliser comme configuration de base :

  1. cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf

Ouvrez ce nouveau fichier dans votre éditeur de texte :

  1. nano ~/client-configs/base.conf

Dans celui-ci, localisez la directive remote. Le client est alors dirigé vers l’adresse de votre serveur OpenVPN - l’adresse IP publique de votre serveur OpenVPN. Si vous avez décidé de modifier le port sur lequel le serveur OpenVPN écoute, vous devrez également changer 1194 pour le port que vous avez sélectionné :

~/client-configs/base.conf
. . .
# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote your_server_ip 1194
. . .

Assurez-vous que le protocole correspond à la valeur que vous utilisez dans la configuration du serveur :

~/client-configs/base.conf
proto udp

Ensuite, décommentez les directives user et group en supprimant le «** ; **» au début de chaque ligne :

~/client-configs/base.conf
# Downgrade privileges after initialization (non-Windows only)
user nobody
group nogroup

Trouvez les directives qui fixent ca, cert et key. Commentez ces directives, car vous ajouterez bientôt les certificats et les clés dans le dossier lui-même :

~/client-configs/base.conf
# SSL/TLS parms.
# See the server config file for more
# description.  It's best to use
# a separate .crt/.key file pair
# for each client.  A single ca
# file can be used for all clients.
#ca ca.crt
#cert client.crt
#key client.key

De même, commentez la directive tls-auth, car vous ajouterez ca.key directement dans le fichier de configuration du client :

~/client-configs/base.conf
# If a tls-auth key is used on the server
# then every client must also have the key.
#tls-auth ta.key 1

Utilisez les mêmes paramètres cypher et auth que ceux que vous avez définis dans le fichier /etc/openvpn/server.conf :

~/client-configs/base.conf
cipher AES-256-CBC
auth SHA256

Ensuite, ajoutez la directive key-direction quelque part dans le fichier. Vous devez régler ce paramètre sur « 1 » pour que le VPN fonctionne correctement sur la machine cliente :

~/client-configs/base.conf
key-direction 1

Enfin, ajoutez quelques lignes commentées. Bien que vous puissiez inclure ces directives dans chaque fichier de configuration client, vous ne devez les activer que pour les clients Linux qui sont livrés avec un fichier /etc/openvpn/update-resolv-conf. Ce script utilise l’utilitaire resolvconf pour mettre à jour les informations DNS pour les clients Linux.

~/client-configs/base.conf
# script-security 2
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf

Si votre client fonctionne sous Linux et possède un fichier /etc/openvpn/update-resolv-conf, décommentez ces lignes du fichier de configuration du client après qu’il a été généré.

Enregistrez et fermez le fichier lorsque vous avez terminé.

Ensuite, créez un simple script qui compilera votre configuration de base avec les fichiers de certificat, de clé et de chiffrement appropriés, puis placez la configuration générée dans le répertoire ~/client-configs/files. Ouvrez un nouveau fichier appelé make_config.sh dans le répertoire ~/client-configs :

  1. nano ~/client-configs/make_config.sh

Dans ce fichier, ajoutez le contenu suivant :

~/client-configs/make_config.sh
#!/bin/bash

# First argument: Client identifier

KEY_DIR=~/client-configs/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf

cat ${BASE_CONFIG} \
    <(echo -e '<ca>') \
    ${KEY_DIR}/ca.crt \
    <(echo -e '</ca>\n<cert>') \
    ${KEY_DIR}/${1}.crt \
    <(echo -e '</cert>\n<key>') \
    ${KEY_DIR}/${1}.key \
    <(echo -e '</key>\n<tls-auth>') \
    ${KEY_DIR}/ta.key \
    <(echo -e '</tls-auth>') \
    > ${OUTPUT_DIR}/${1}.ovpn

Enregistrez et fermez le fichier lorsque vous avez terminé.

Avant de poursuivre, veillez à marquer ce fichier comme exécutable en tapant :

  1. chmod 700 ~/client-configs/make_config.sh

Ce script fera une copie du fichier base.conf que vous avez créé, rassemblera tous les fichiers de certificats et de clés que vous avez créés pour votre client, extraira leur contenu, les ajoutera à la copie du fichier de configuration de la base et exportera tout ce contenu dans un nouveau fichier de configuration du client. Cela signifie que, plutôt que de devoir gérer séparément les fichiers de configuration, de certificat et de clé du client, toutes les informations requises sont stockées en un seul endroit. L’avantage est que si vous avez besoin d’ajouter un client à l’avenir, vous pouvez simplement exécuter ce script pour créer rapidement le fichier de configuration et vous assurer que toutes les informations importantes sont stockées dans un seul endroit facile d’accès.

Veuillez noter qu’à chaque fois que vous ajouterez un nouveau client, vous devrez générer de nouvelles clés et de nouveaux certificats pour lui avant de pouvoir exécuter ce script et générer son fichier de configuration. Vous vous entraînerez à utiliser ce script dans la prochaine étape.

Étape 9 - Création de configurations du client

Si vous avez suivi le guide, vous avez créé un certificat de client et une clé nommés respectivement client1.crt et client1.key à l’étape 4. Vous pouvez générer un fichier de configuration pour ces certificats en vous déplaçant dans votre répertoire ~/client-configs et en exécutant le script que vous avez créé à la fin de l’étape précédente :

  1. cd ~/client-configs
  2. sudo ./make_config.sh client1

Cela créera un fichier nommé client1.ovpn dans votre répertoire ~/client-configs/files :

  1. ls ~/client-configs/files
Output
client1.ovpn

Vous devez transférer ce fichier sur l’appareil que vous prévoyez d’utiliser en tant que client. Il peut s’agir, par exemple, de votre ordinateur local ou d’un appareil mobile.

Bien que les applications exactes utilisées pour effectuer ce transfert dépendent du système d’exploitation de votre appareil et de vos préférences personnelles, utiliser le SFTP (protocole de transfert de fichiers SSH) ou le SCP (Secure Copy) en back-end constitue une méthode fiable et sûre. Cela permettra de transporter les fichiers d’authentification VPN de votre client sur une connexion chiffrée.

Voici un exemple de commande SFTP utilisant l’exemple client1.ovpn que vous pouvez exécuter depuis votre ordinateur local (macOS ou Linux). Il place le fichier .ovpn dans votre répertoire de base :

  1. sftp sammy@your_server_ip:client-configs/files/client1.ovpn ~/

Voici plusieurs outils et tutoriels pour transférer en toute sécurité des fichiers du serveur vers un ordinateur local :

Étape 10 - Installation de la configuration client

Cette section explique comment installer un profil VPN client sur Windows, macOS, Linux, iOS et Android. Aucune de ces instructions du client ne dépend d’une autre, alors n’hésitez pas à passer à celle qui s’applique à votre appareil.

La connexion OpenVPN portera le même nom que celui du fichier .ovpn. Pour ce tutoriel, cela signifie que la connexion est nommée client1.ovpn, s’alignant sur le premier fichier client que vous avez généré.

Windows

Installation

Téléchargez l’application client OpenVPN pour Windows depuis la page de téléchargement d’OpenVPN. Choisissez la version d’installation appropriée pour votre version de Windows.

Remarque

OpenVPN a besoin de privilèges administratifs pour s’installer.

Après avoir installé OpenVPN, copiez le fichier .ovpn dans :

C:\Program Files\OpenVPN\config

Lorsque vous lancez OpenVPN, il voit automatiquement le profil et le rend disponible.

Vous devez exécuter OpenVPN en tant qu’administrateur à chaque fois qu’il est utilisé, même par des comptes administratifs. Pour effectuer cette action sans avoir à cliquer sur le bouton droit de la souris et à sélectionner Exécuter en tant qu’administrateur chaque fois que vous utilisez le VPN, vous devez le pré-régler à partir d’un compte administratif. Cela signifie également que les utilisateurs standard devront entrer le mot de passe de l’administrateur pour utiliser OpenVPN. Les utilisateurs standard ne peuvent pas se connecter correctement au serveur à moins que l’application OpenVPN sur le client n’ait des droits d’administrateur, les privilèges élevés sont donc nécessaires.

Pour que l’application OpenVPN s’exécute toujours en tant qu’administrateur, cliquez avec le bouton droit de la souris sur son icône de raccourci et allez dans Propriétés. En bas de l’onglet Compatibilité, cliquez sur le bouton Modifier les paramètres pour tous les utilisateurs. Dans la nouvelle fenêtre, cochez Exécuter ce programme en tant qu’administrateur.

Connexion

À chaque fois que vous lancez l’interface graphique d’OpenVPN, Windows vous demande si vous souhaitez autoriser le programme à apporter des modifications à votre ordinateur. Cliquez sur Oui. Le lancement de l’application client OpenVPN ne fait que placer l’applet dans la barre d’état système afin que vous puissiez connecter et déconnecter le VPN selon vos besoins : il n’établit pas réellement la connexion VPN.

Une fois qu’OpenVPN est lancé, initiez une connexion en vous rendant dans l’applet de la barre d’état système et en cliquant avec le bouton droit de la souris sur l’icône de l’applet OpenVPN. Cela ouvre le menu contextuel. Sélectionnez client1 en haut du menu (c’est votre profil client1.ovpn) et choisissez Connecter.

Une fenêtre d’état s’ouvrira, montrant la sortie du journal pendant que la connexion est établie, et un message s’affichera une fois que le client sera connecté.

Déconnectez-vous du VPN de la même manière : allez dans l’applet de la barre d’état système, cliquez avec le bouton droit de la souris sur l’icône de l’applet OpenVPN, sélectionnez le profil du client et cliquez sur Déconnecter.

macOS

Installation

Tunnelblick est un client OpenVPN gratuit et open source pour macOS. Vous pouvez télécharger la dernière image disque à partir de la page de téléchargement de Tunnelblick. Double-cliquez sur le fichier .dmg téléchargé et suivez les instructions pour l’installer.

Vers la fin du processus d’installation, Tunnelblick vous demandera si vous avez des fichiers de configuration. Répondez J’ai des fichiers de configuration et laissez Tunnelblick finir. Ouvrez une fenêtre du Finder et double-cliquez sur client1.ovpn. Tunnelblick installera le profil du client. Des privilèges administratifs sont requis.

Connexion

Lancez Tunnelblick en double-cliquant sur l’icône de Tunnelblick dans le dossier Applications. Lorsque Tunnelblick est lancé, une icône Tunnelblick apparaît dans la barre de menu en haut à droite de l’écran pour contrôler les connexions. Cliquez sur l’icône, puis sur l’élément de menu Connecter client1 pour lancer la connexion VPN.

Linux

Installation

Si vous utilisez Linux, vous pouvez utiliser plusieurs outils en fonction de votre distribution. Votre environnement de bureau ou votre gestionnaire de fenêtres peut également inclure des utilitaires de connexion.

La façon la plus universelle de se connecter, cependant, est d’utiliser simplement le logiciel OpenVPN.

Sur Ubuntu ou Debian, vous pouvez l’installer comme vous l’avez fait sur le serveur en tapant :

  1. sudo apt update
  2. sudo apt install openvpn

Sur CentOS, vous pouvez activer les référentiels EPEL et les installer ensuite en tapant :

  1. sudo yum install epel-release
  2. sudo yum install openvpn

Configuration

Vérifiez que votre distribution comprend un script /etc/openvpn/update-resolv-conf :

  1. ls /etc/openvpn
Output
update-resolv-conf

Ensuite, modifiez le fichier de configuration client OpenVPN que vous avez transféré :

  1. nano client1.ovpn

Si vous avez trouvé un fichier update-resolv-conf, décommentez les trois lignes que vous avez ajoutées pour ajuster les paramètres DNS :

client1.ovpn
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

Si vous utilisez CentOS, changez la directive group de nogroup à nobody pour qu’elle corresponde aux groupes disponibles de la distribution :

client1.ovpn
group nobody

Enregistrez et fermez le fichier.

Maintenant, vous pouvez vous connecter au VPN en pointant simplement la commande openvpn sur le fichier de configuration client :

  1. sudo openvpn --config client1.ovpn

Cela devrait vous connecter à votre VPN.

iOS

Installation

Depuis l’App Store d’iTunes, recherchez et installez OpenVPN Connect, l’application client OpenVPN officielle pour iOS. Pour transférer la configuration de votre client iOS sur l’appareil, connectez-le directement à un ordinateur.

La procédure à suivre pour effectuer le transfert avec iTunes est décrite ici. Ouvrez iTunes sur l’ordinateur et cliquez sur iPhone > apps. Faites défiler vers le bas jusqu’à la section Partage de fichiers et cliquez sur l’application OpenVPN. La fenêtre vide à droite, Documents OpenVPN, est destinée au partage de fichiers. Faites glisser le fichier .ovpn vers la fenêtre Documents OpenVPN.

iTunes showing the VPN profile ready to load on the iPhone

Lancez maintenant l’application OpenVPN sur l’iPhone. Vous recevrez une notification vous informant qu’un nouveau profil est prêt à être importé. Appuyez sur le signe + vert pour l’importer.

The OpenVPN iOS app showing new profile ready to import

Connexion

OpenVPN est maintenant prêt à être utilisé avec le nouveau profil. Démarrez la connexion en faisant glisser le bouton Connect sur la position On. Déconnectez-vous en faisant glisser le même bouton sur Off.

Remarque 

Le bouton VPN sous Settings ne peut pas être utilisé pour se connecter au VPN. Si vous essayez, vous recevrez un avis vous invitant à vous connecter uniquement à l’aide de l’application OpenVPN.

The OpenVPN iOS app connected to the VPN

Android

Installation

Ouvrez le Google Play Store. Recherchez et installez Android OpenVPN Connect, l’application client officielle d’OpenVPN sur Android.

Vous pouvez transférer le profil .ovpn en connectant l’appareil Android à votre ordinateur par USB et en copiant le fichier dessus. Sinon, si vous disposez d’un lecteur de carte SD, vous pouvez retirer la carte SD de l’appareil, y copier le profil, puis réinsérer la carte dans l’appareil Android.

Lancez l’application OpenVPN et cliquez sur le menu pour importer le profil.

The OpenVPN Android app profile import menu selection

Naviguez ensuite jusqu’à l’emplacement du profil enregistré (la capture d’écran utilise /sdcard/Download/) et sélectionnez le fichier. L’application vous notifiera que le profil a été importé.

The OpenVPN Android app selecting VPN profile to import

Connexion

Pour vous connecter, cliquez simplement sur le bouton Connect. On vous demandera si vous faites confiance à l’application OpenVPN. Choisissez OK pour lancer la connexion. Pour vous déconnecter du VPN, retournez sur l’application OpenVPN et choisissez Disconnect.

The OpenVPN Android app ready to connect to the VPN

Étape 11 - Test de votre connexion VPN (Facultatif)

**Remarque **: cette méthode pour tester votre connexion VPN ne fonctionnera que si vous avez choisi de faire passer tout votre trafic par le VPN à l’étape 5.

Une fois que tout est installé, une simple vérification confirme que tout fonctionne correctement. Sans avoir activé de connexion VPN, ouvrez un navigateur et allez sur DNSLeakTest.

Le site renvoie l’adresse IP attribuée par votre fournisseur d’accès à Internet et telle que vous apparaissez au reste du monde. Pour vérifier vos paramètres DNS sur le même site web, cliquez sur Extended test et il vous indiquera quels serveurs DNS vous utilisez.

Connectez maintenant le client OpenVPN au VPN de votre Droplet et rafraîchissez le navigateur. Une adresse IP complètement différente (celle de votre serveur VPN) devrait maintenant apparaître, et c’est ainsi que vous apparaissez au monde. Encore une fois, le test Extended Test de DNSLeakTest vérifiera vos paramètres DNS et confirmera que vous utilisez maintenant les résolveurs DNS poussés par votre VPN.

Étape 12 - Révocation des certificats des clients

Il peut arriver que vous deviez révoquer le certificat d’un client pour empêcher tout accès ultérieur au serveur OpenVPN.

Pour ce faire, accédez au répertoire EasyRSA sur votre machine AC :

  1. cd EasyRSA-3.0.4/

Ensuite, lancez le script easyrsa avec l’option revoke, suivi du nom du client que vous souhaitez révoquer :

  1. ./easyrsa revoke client2

Il vous sera demandé de confirmer la révocation en entrant yes :

Output
Please confirm you wish to revoke the certificate with the following subject: subject= commonName = client2 Type the word 'yes' to continue, or any other input to abort. Continue with revocation: yes

Après avoir confirmé l’action, l’AC révoquera entièrement le certificat du client. Cependant, votre serveur OpenVPN n’a actuellement aucun moyen de vérifier si les certificats des clients ont été révoqués et le client aura toujours accès au VPN. Pour corriger cela, créez une liste de révocation de certificats (CRL) sur votre machine AC :

  1. ./easyrsa gen-crl

Cette action entraînera la création d’un fichier appelé crl.pem. Transférez ce fichier vers votre serveur OpenVPN en toute sécurité :

  1. scp ~/EasyRSA-3.0.4/pki/crl.pem sammy@your_server_ip:/tmp

Sur votre serveur OpenVPN, copiez ce fichier dans votre répertoire /etc/openvpn/ :

  1. sudo cp /tmp/crl.pem /etc/openvpn

Ensuite, ouvrez le fichier de configuration du serveur OpenVPN :

  1. sudo nano /etc/openvpn/server.conf

Au bas du fichier, ajoutez l’option crl-verify, qui demandera au serveur OpenVPN de vérifier la liste de révocation de certificats que nous avons créée à chaque tentative de connexion :

/etc/openvpn/server.conf
crl-verify crl.pem

Enregistrez et fermez le fichier.

Enfin, redémarrez OpenVPN pour implémenter la révocation du certificat :

  1. sudo systemctl restart openvpn@server

Le client ne devrait plus être en mesure de se connecter au serveur en utilisant les anciennes informations d’identification.

Pour révoquer d’autres clients, procédez comme suit :

  1. Révoquez le certificat avec la commande ./easyrsa revoke client-name
  2. Générez un nouveau fichier CRL
  3. Transférez le nouveau fichier crl.pem sur votre serveur OpenVPN et copiez-le dans le répertoire /etc/openvpn pour écraser l’ancienne liste.
  4. Redémarrez le service OpenVPN.

Vous pouvez utiliser cette méthode processus pour révoquer tout certificat que vous avez précédemment émis pour votre serveur.

Conclusion

Vous naviguez désormais en toute sécurité sur Internet en protégeant votre identité, votre emplacement et votre trafic des espions et des censeurs.

Pour configurer davantage de clients, il vous suffit de suivre les étapes 4 et 9-11 pour chaque appareil supplémentaire. Pour révoquer l’accès aux clients, il suffit de suivre l’étape 12.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about us


About the authors
Default avatar

Manager, Developer Education

Technical Writer @ DigitalOcean

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more
DigitalOcean Cloud Control Panel