Introduction
Un réseau privé virtuel (VPN) vous permet de traverser des réseaux non fiables comme si vous étiez sur un réseau privé. Il vous donne la liberté d'accéder à Internet en toute sécurité depuis votre smartphone ou votre ordinateur portable lorsque vous êtes connecté à un réseau non fiable, comme le Wi-Fi d'un hôtel ou d'un café.
Lorsqu'elle est combinée avec des 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é des réseaux non fiables.
OpenVPN est une solution VPN TLS (Transport Layer Security) open-source complète qui s'adapte à un large éventail de configurations. Dans ce didacticiel, vous allez configurer OpenVPN sur un serveur Ubuntu 22.04, puis le configurer pour qu'il soit accessible depuis une machine cliente.
Remarque : Si vous envisagez de configurer un serveur OpenVPN sur un droplet DigitalOcean, sachez que, comme de nombreux hébergeurs, nous facturons les dépassements de bande passante. Pour cette raison, veuillez faire attention au volume de trafic que votre serveur gère.
Voir cette page pour plus d'informations.
Prérequis
Pour suivre ce tutoriel, vous aurez besoin de :
- Un serveur Ubuntu 22.04 avec un utilisateur sudo non root et un pare-feu activé. Pour le configurer, vous pouvez suivre notre tutoriel Configuration initiale du serveur avec Ubuntu 22.04. Nous l'appellerons le serveur OpenVPN tout au long de ce guide.
- Un serveur Ubuntu 22.04 distinct configuré en tant qu'autorité de certification (CA) privée, que nous appellerons le serveur CA tout au long de ce guide. Après avoir exécuté les étapes du Guide de configuration initiale du serveur sur ce serveur, vous pouvez suivre les étapes 1 à 3 de notre guide sur Comment installer et configurer une autorité de certification (CA) sur Ubuntu 22.04 pour y parvenir.
Remarque : Bien qu'il soit techniquement possible d'utiliser votre serveur OpenVPN ou votre machine locale comme autorité de certification, cela n'est pas recommandé car cela expose votre VPN à certaines vulnérabilités de sécurité. Selon la documentation officielle d'OpenVPN, vous devez placer votre autorité de certification sur une machine autonome dédiée à l'importation et à la signature des demandes de certificat. Pour cette raison, ce guide suppose que votre autorité de certification se trouve sur un serveur Ubuntu 22.04 distinct qui a également un utilisateur non root avec des privilèges sudo et un pare-feu de base activé.
En plus de cela, vous aurez besoin d'une machine cliente que vous utiliserez pour vous connecter à votre serveur OpenVPN. Dans ce guide, nous l'appellerons le Client OpenVPN . Pour les besoins de ce didacticiel, il est recommandé d'utiliser votre machine locale comme client OpenVPN.
Avec ces conditions préalables en place, vous êtes prêt à commencer à installer et à configurer un serveur OpenVPN sur Ubuntu 22.04.
Remarque : Veuillez noter que si vous désactivez l'authentification par mot de passe lors de la configuration de ces serveurs, vous pouvez rencontrer des difficultés lors du transfert de fichiers entre eux plus loin dans ce guide. Pour résoudre ce problème, vous pouvez réactiver l'authentification par mot de passe sur chaque serveur. Alternativement, vous pouvez générer une paire de clés SSH pour chaque serveur, puis ajouter la clé SSH publique du serveur OpenVPN aux authorized_keys
de la machine CA. fichier et inversement. Voir Comment configurer des clés SSH sur Ubuntu 22.04 pour obtenir des instructions sur la façon d'effectuer l'une de ces solutions.
Étape 1 — Installer OpenVPN et Easy-RSA
La première étape de ce tutoriel consiste à installer OpenVPN et Easy-RSA. Easy-RSA est un outil de gestion d'infrastructure à clé publique (PKI) que vous utiliserez sur le serveur OpenVPN pour générer une demande de certificat que vous vérifierez et signerez ensuite sur le serveur CA.
Pour commencer, mettez à jour l'index de package de votre serveur OpenVPN et installez OpenVPN et Easy-RSA. Les deux packages sont disponibles dans les référentiels par défaut d'Ubuntu, vous pouvez donc utiliser apt
pour l'installation :
- sudo apt update
- sudo apt install openvpn easy-rsa
Ensuite, vous devrez créer un nouveau répertoire sur le serveur OpenVPN en tant qu'utilisateur non root appelé ~/easy-rsa
:
- mkdir ~/easy-rsa
Maintenant, vous devrez créer un lien symbolique à partir de easyrsa
script que le paquet a installé dans le ~/easy-rsa
répertoire que vous venez de créer :
- ln -s /usr/share/easy-rsa/* ~/easy-rsa/
Remarque : Alors que d'autres guides peuvent vous demander de copier le easy-rsa
fichiers de package dans votre répertoire PKI, ce didacticiel adopte une approche de lien symbolique. Par conséquent, toute mise à jour de easy-rsa
sera automatiquement reflété dans les scripts de votre PKI.
Enfin, assurez-vous que le propriétaire du répertoire est votre utilisateur sudo non root et limitez l'accès à cet utilisateur en utilisant chmod
:
- sudo chown sammy ~/easy-rsa
- chmod 700 ~/easy-rsa
Une fois ces programmes installés et déplacés vers les bons emplacements sur votre système, l'étape suivante consiste à créer une infrastructure à clé publique (PKI) sur le serveur OpenVPN afin que vous puissiez demander et gérer les certificats TLS pour les clients et les autres serveurs qui connectez-vous à votre VPN.
Étape 2 — Création d'une PKI pour OpenVPN
Avant de pouvoir créer la clé privée et le certificat de votre serveur OpenVPN, vous devez créer un répertoire local d'infrastructure de clé publique sur votre serveur OpenVPN. Vous utiliserez ce répertoire pour gérer les demandes de certificats du serveur et des clients au lieu de les faire directement sur votre serveur CA.
Pour créer un répertoire PKI sur votre serveur OpenVPN, vous devrez remplir un fichier appelé vars
avec quelques valeurs par défaut. Vous allez d'abord cd
dans le easy-rsa
répertoire, puis vous allez créer et modifier le vars
fichier à l'aide de nano ou de votre éditeur de texte préféré.
- cd ~/easy-rsa
- nano vars
Une fois le fichier ouvert, collez les deux lignes suivantes :
~/easy-rsa/varsset_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"
Ce sont les deux seules lignes dont vous avez besoin dans ce vars
fichier sur votre serveur OpenVPN car il ne sera pas utilisé comme autorité de certification. Ils s'assureront que vos clés privées et vos demandes de certificat sont configurées pour utiliser la cryptographie à courbe elliptique (ECC) moderne afin de générer des clés et des signatures sécurisées pour vos clients et votre serveur OpenVPN.
La configuration de vos serveurs OpenVPN &CA pour utiliser ECC signifie que lorsqu'un client et un serveur tentent d'établir une clé symétrique partagée, ils peuvent utiliser des algorithmes de courbe elliptique pour effectuer leur échange. L'utilisation d'ECC pour un échange de clés est nettement plus rapide que l'utilisation de Diffie-Hellman simple avec l'algorithme RSA classique, car les nombres sont beaucoup plus petits et les calculs sont plus rapides.
Contexte : Lorsque les clients se connectent à OpenVPN, ils utilisent un cryptage asymétrique (également connu sous le nom de clé publique/privée) pour effectuer une poignée de main TLS. Cependant, lors de la transmission du trafic VPN chiffré, le serveur et les clients utilisent le chiffrement symétrique, également appelé chiffrement à clé partagée.
Il y a beaucoup moins de surcharge de calcul avec le chiffrement symétrique par rapport au chiffrement asymétrique :les nombres utilisés sont beaucoup plus petits et les processeurs modernes intègrent des instructions pour effectuer des opérations de chiffrement symétrique optimisées. Pour passer du cryptage asymétrique au cryptage symétrique, le serveur et le client OpenVPN utiliseront l'algorithme Elliptic Curve Diffie-Hellman (ECDH) pour convenir d'une clé secrète partagée aussi rapidement que possible.
Une fois que vous avez rempli les vars
fichier, vous pouvez procéder à la création du répertoire PKI. Pour ce faire, exécutez le easyrsa
script avec le init-pki
option. Bien que vous ayez déjà exécuté cette commande sur le serveur CA dans le cadre des prérequis, il est nécessaire de l'exécuter ici car votre serveur OpenVPN et votre serveur CA ont des répertoires PKI distincts :
- ./easyrsa init-pki
Notez que sur votre serveur OpenVPN, il n'est pas nécessaire de créer une autorité de certification. Votre serveur CA est seul responsable de la validation et de la signature des certificats. L'ICP sur votre serveur VPN est uniquement utilisée comme emplacement pratique et centralisé pour stocker les demandes de certificat et les certificats publics.
Après avoir initialisé votre PKI sur le serveur OpenVPN, vous êtes prêt à passer à l'étape suivante, qui consiste à créer une demande de certificat de serveur OpenVPN et une clé privée.
Étape 3 - Création d'une demande de certificat de serveur OpenVPN et d'une clé privée
Maintenant que votre serveur OpenVPN a tous les prérequis installés, l'étape suivante consiste à générer une clé privée et une demande de signature de certificat (CSR) sur votre serveur OpenVPN. Après cela, vous transférerez la demande à votre autorité de certification pour qu'elle soit signée, en créant le certificat requis. Une fois que vous avez un certificat signé, vous le transférez sur le serveur OpenVPN et l'installez pour que le serveur l'utilise.
Pour commencer, accédez au ~/easy-rsa
répertoire sur votre serveur OpenVPN en tant qu'utilisateur non root :
- cd ~/easy-rsa
Vous allez maintenant appeler easyrsa
avec le gen-req
suivie d'un nom commun (CN) pour la machine. Le CN peut être ce que vous voulez, mais il peut être utile d'en faire quelque chose de descriptif. Tout au long de ce tutoriel, le CN du serveur OpenVPN sera server
. Assurez-vous d'inclure le nopass
possibilité également. Si vous ne le faites pas, le fichier de demande sera protégé par un mot de passe, ce qui pourrait entraîner des problèmes d'autorisations ultérieurement.
Remarque : Si vous choisissez un nom autre que server
ici, vous devrez ajuster certaines des instructions ci-dessous. Par exemple, lors de la copie des fichiers générés dans le /etc/openvpn
répertoire, vous devrez substituer les noms corrects. Vous devrez également modifier le /etc/openvpn/server.conf
fichier plus tard pour pointer vers le bon .crt
et .key
fichiers.
- ./easyrsa gen-req server nopass
OutputCommon Name (eg: your user, host, or server name) [server]:
Keypair and certificate request completed. Your files are:
req: /home/sammy/easy-rsa/pki/reqs/server.req
key: /home/sammy/easy-rsa/pki/private/server.key
Cela créera une clé privée pour le serveur et un fichier de demande de certificat appelé server.req
. Copiez la clé du serveur dans le /etc/openvpn/server
répertoire :
- sudo cp /home/sammy/easy-rsa/pki/private/server.key /etc/openvpn/server/
Après avoir terminé ces étapes, vous avez créé avec succès une clé privée pour votre serveur OpenVPN. Vous avez également généré une demande de signature de certificat pour le serveur OpenVPN. Le CSR est maintenant prêt à être signé par votre autorité de certification. Dans la section suivante de ce didacticiel, vous apprendrez à signer un CSR avec la clé privée de votre serveur CA.
Étape 4 - Signature de la demande de certificat du serveur OpenVPN
À l'étape précédente, vous avez créé une demande de signature de certificat (CSR) et une clé privée pour le serveur OpenVPN. Maintenant, le serveur CA doit connaître le server
certificat et validez-le. Une fois que l'autorité de certification a validé et retransmis le certificat au serveur OpenVPN, les clients qui font confiance à votre autorité de certification pourront également faire confiance au serveur OpenVPN.
Sur le serveur OpenVPN, en tant qu'utilisateur non root, utilisez SCP ou une autre méthode de transfert pour copier le server.req
demande de certificat au serveur CA pour signature :
- scp /home/sammy/easy-rsa/pki/reqs/server.req sammy@your_ca_server_ip:/tmp
Si vous avez suivi le didacticiel préalable How To Set Up and Configure a Certificate Authority (CA) on Ubuntu 22.04, l'étape suivante consiste à vous connecter au serveur CA en tant qu'utilisateur non root que vous avez créé pour gérer votre autorité de certification. Vous allez cd
au ~/easy-rsa
répertoire où vous avez créé votre PK puis importez la demande de certificat en utilisant le easyrsa
script :
- cd ~/easy-rsa
- ./easyrsa import-req /tmp/server.req server
Output. . .
The request has been successfully imported with a short name of: server
You may now use this name to perform signing operations on this request.
Ensuite, signez la demande en exécutant le easyrsa
script avec le sign-req
option, suivi du type de demande et du nom commun. Le type de requête peut être soit client
ou server
. Puisque vous travaillez avec la demande de certificat du serveur OpenVPN, assurez-vous d'utiliser le server
type de demande :
- ./easyrsa sign-req server server
Dans la sortie, vous serez invité à vérifier que la demande provient d'une source fiable. Tapez yes
puis appuyez sur ENTER
pour confirmer :
OutputYou 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
. . .
Certificate created at: /home/sammy/easy-rsa/pki/issued/server.crt
Notez que si vous avez crypté votre clé privée CA, vous serez invité à saisir votre mot de passe à ce stade.
Une fois ces étapes terminées, vous avez signé la demande de certificat du serveur OpenVPN à l'aide de la clé privée du serveur CA. Le résultat server.crt
Le fichier contient la clé de cryptage publique du serveur OpenVPN, ainsi qu'une signature du serveur CA. Le but de la signature est de dire à toute personne qui fait confiance au serveur CA qu'elle peut également faire confiance au serveur OpenVPN lorsqu'elle s'y connecte.
Pour terminer la configuration des certificats, copiez le server.crt
et ca.crt
fichiers du serveur CA vers le serveur OpenVPN :
- scp pki/issued/server.crt sammy@your_vpn_server_ip:/tmp
- scp pki/ca.crt sammy@your_vpn_server_ip:/tmp
De retour sur votre serveur OpenVPN, copiez les fichiers depuis /tmp
vers /etc/openvpn/server
:
- sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/server
Votre serveur OpenVPN est maintenant presque prêt à accepter les connexions. Dans l'étape suivante, vous effectuerez quelques étapes supplémentaires pour augmenter la sécurité du serveur.
Étape 5 - Configuration du matériel cryptographique OpenVPN
Pour une couche de sécurité supplémentaire, ajoutez une clé secrète partagée supplémentaire que le serveur et tous les clients utiliseront avec tls-crypt
d'OpenVPN directif. Cette option est utilisée pour masquer le certificat TLS qui est utilisé lorsqu'un serveur et un client se connectent initialement. Il est également utilisé par le serveur OpenVPN pour effectuer des contrôles rapides sur les paquets entrants :si un paquet est signé à l'aide de la clé pré-partagée, alors le serveur le traite; s'il n'est pas signé, le serveur sait qu'il provient d'une source non fiable et peut le rejeter sans avoir à effectuer de travail de déchiffrement supplémentaire.
Cette option vous aidera à vous assurer que votre serveur OpenVPN est capable de faire face au trafic non authentifié, aux analyses de port et aux attaques par déni de service, qui peuvent monopoliser les ressources du serveur. Cela rend également plus difficile l'identification du trafic réseau OpenVPN.
Pour générer le tls-crypt
clé pré-partagée, exécutez ce qui suit sur le serveur OpenVPN dans le ~/easy-rsa
répertoire :
- cd ~/easy-rsa
- openvpn --genkey secret ta.key
Le résultat sera un fichier nommé ta.key
. Copiez-le dans le /etc/openvpn/server/
répertoire :
- sudo cp ta.key /etc/openvpn/server
Une fois ces fichiers en place sur le serveur OpenVPN, vous êtes prêt à créer des certificats clients et des fichiers de clés pour vos utilisateurs, que vous utiliserez pour vous connecter au VPN.
Étape 6 - Génération d'un certificat client et d'une paire de clés
Bien que vous puissiez générer une clé privée et une demande de certificat sur votre ordinateur client, puis les envoyer à l'autorité de certification pour qu'elles soient signées, ce guide décrit un processus de génération de la demande de certificat sur le serveur OpenVPN. L'avantage de cette approche est que vous pouvez 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 des clés, des certificats et des fichiers de configuration aux clients et rationalise le processus d'adhésion au VPN.
Vous allez générer une seule clé client et une paire de certificats pour ce guide. Si vous avez plus d'un client, vous pouvez répéter ce processus pour chacun d'eux. Veuillez noter, cependant, que vous devrez transmettre une valeur de nom unique au script pour chaque client. Tout au long de ce didacticiel, la première paire certificat/clé est appelée client1
.
Commencez par créer une structure de répertoires dans votre répertoire personnel pour stocker le certificat client et les fichiers de clé :
- mkdir -p ~/client-configs/keys
Étant donné que vous allez stocker les paires certificat/clé et les fichiers de configuration de vos clients dans ce répertoire, vous devez verrouiller ses autorisations maintenant par mesure de sécurité :
- chmod -R 700 ~/client-configs
Ensuite, revenez au répertoire EasyRSA et exécutez le easyrsa
script avec le gen-req
et nopass
options, ainsi que le nom commun du client :
- cd ~/easy-rsa
- ./easyrsa gen-req client1 nopass
Appuyez sur ENTER
pour confirmer le nom commun. Ensuite, copiez le client1.key
fichier dans le ~/client-configs/keys/
répertoire que vous avez créé précédemment :
- cp pki/private/client1.key ~/client-configs/keys/
Ensuite, transférez le client1.req
fichier sur votre serveur CA en utilisant une méthode sécurisée :
- scp pki/reqs/client1.req sammy@your_ca_server_ip:/tmp
Connectez-vous maintenant à votre serveur CA. Ensuite, accédez au répertoire EasyRSA et importez la demande de certificat :
- cd ~/easy-rsa
- ./easyrsa import-req /tmp/client1.req client1
Ensuite, signez la demande de la même manière que vous l'avez fait pour le serveur à l'étape précédente. Cette fois, cependant, assurez-vous de spécifier le client
type de demande :
- ./easyrsa sign-req client client1
Lorsque vous y êtes invité, saisissez yes
pour confirmer que vous avez l'intention de signer la demande de certificat et qu'il provient d'une source fiable :
OutputType the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
Encore une fois, si vous avez crypté votre clé CA, 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 :
- scp pki/issued/client1.crt sammy@your_server_ip:/tmp
De retour sur votre serveur OpenVPN, copiez le certificat client dans le ~/client-configs/keys/
répertoire :
- cp /tmp/client1.crt ~/client-configs/keys/
Ensuite, copiez le ca.crt
et ta.key
fichiers dans ~/client-configs/keys/
ainsi que le répertoire et définissez les autorisations appropriées pour votre utilisateur sudo :
- cp ~/easy-rsa/ta.key ~/client-configs/keys/
- sudo cp /etc/openvpn/server/ca.crt ~/client-configs/keys/
- sudo chown sammy.sammy ~/client-configs/keys/*
Avec cela, 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 sur votre serveur OpenVPN. Il reste encore quelques actions à effectuer avec ces fichiers, mais celles-ci viendront dans une étape ultérieure. Pour l'instant, vous pouvez passer à la configuration d'OpenVPN.
Étape 7 - Configuration d'OpenVPN
Comme de nombreux autres outils open source largement utilisés, OpenVPN propose de nombreuses options de configuration pour personnaliser votre serveur en fonction de vos besoins spécifiques. Dans cette section, nous fournirons des instructions sur la façon de configurer une configuration de serveur OpenVPN basée sur l'un des exemples de fichiers de configuration inclus dans la documentation de ce logiciel.
Tout d'abord, copiez l'exemple server.conf
comme point de départ pour votre propre fichier de configuration :
- sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/server/
Ouvrez le nouveau fichier pour le modifier avec nano
ou l'éditeur de texte de votre choix :
- sudo nano /etc/openvpn/server/server.conf
Vous devrez modifier quelques lignes dans ce fichier. Tout d'abord, trouvez le HMAC
section de la configuration en recherchant le tls-auth
directif. Cette ligne sera activée par défaut. Commentez-le en ajoutant un ;
au début de la ligne. Ajoutez ensuite une nouvelle ligne après celle-ci contenant la valeur tls-crypt ta.key
uniquement :
;tls-auth ta.key 0 # This file is secret
tls-crypt ta.key
Ensuite, trouvez la section sur les chiffrements cryptographiques en recherchant le cipher
lignes. La valeur par défaut est définie sur AES-256-CBC
, cependant, le AES-256-GCM
cipher offre un meilleur niveau de cryptage, de performances et est bien pris en charge dans les clients OpenVPN à jour. Commentez la valeur par défaut en ajoutant un ;
signe au début de cette ligne, puis ajoutez une autre ligne après celle-ci contenant la valeur mise à jour de AES-256-GCM
:
;cipher AES-256-CBC
cipher AES-256-GCM
Juste après cette ligne, ajoutez un auth
pour sélectionner l'algorithme de résumé de message HMAC. Pour cela, SHA256
est un bon choix :
auth SHA256
Ensuite, trouvez la ligne contenant un dh
directive, qui définit les paramètres Diffie-Hellman. Étant donné que vous avez configuré tous les certificats pour utiliser la cryptographie à courbe elliptique, aucun fichier de départ Diffie-Hellman n'est nécessaire. Commentez la ligne existante qui ressemble à dh dh2048.pem
ou dh dh.pem
. Le nom de fichier de la clé Diffie-Hellman peut être différent de celui indiqué dans l'exemple de fichier de configuration de serveur. Ajoutez ensuite une ligne après avec le contenu dh none
:
;dh dh2048.pem
dh none
Ensuite, OpenVPN devrait s'exécuter sans privilèges une fois qu'il a démarré, vous devrez donc lui dire de s'exécuter avec un utilisateur nobody et le groupe nogroup . Pour l'activer, recherchez et décommentez le user nobody
et group nogroup
lignes en supprimant le ;
signe au début de chaque ligne :
user nobody
group nogroup
(Facultatif) Transférez les modifications DNS pour rediriger tout le trafic via le VPN
Les paramètres ci-dessus créeront la connexion VPN entre votre client et votre serveur, mais ne forceront aucune connexion à utiliser le tunnel. Si vous souhaitez utiliser le VPN pour acheminer tout le trafic de votre client via le VPN, vous voudrez probablement pousser certains paramètres supplémentaires vers les ordinateurs clients.
Pour commencer, recherchez et décommentez la ligne contenant push "redirect-gateway def1 bypass-dhcp"
. Cela indiquera à votre client de rediriger tout son trafic via votre serveur OpenVPN. Sachez que l'activation de cette fonctionnalité peut entraîner des problèmes de connectivité avec d'autres services réseau, tels que SSH :
push "redirect-gateway def1 bypass-dhcp"
Juste en dessous de cette ligne, trouvez le dhcp-option
section. Encore une fois, supprimez le ;
depuis le début des deux lignes pour les décommenter :
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
Ces lignes indiqueront à votre client d'utiliser les résolveurs OpenDNS gratuits aux adresses IP répertoriées. Si vous préférez d'autres résolveurs DNS, vous pouvez les substituer à la place des adresses IP en surbrillance.
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 client. Si vous devez utiliser un port différent en raison d'environnements réseau restrictifs dans lesquels vos clients peuvent se trouver, vous pouvez modifier le port
option. Si vous n'hébergez pas de contenu Web sur votre serveur OpenVPN, portez 443
est un choix populaire car il est généralement autorisé par les règles de pare-feu.
Pour changer OpenVPN pour écouter sur le port 443, ouvrez le server.conf
fichier et recherchez la ligne qui ressemble à ceci :
port 1194
Modifiez-le pour que le port soit 443 :
/etc/openvpn/server/server.conf# Optional!
port 443
Souvent, le protocole est également limité à ce port. Si oui, trouvez le proto
ligne sous le port
ligne et changez le protocole de udp
vers tcp
:
# Optional!
proto tcp
Si vous faites basculez le protocole vers TCP, vous devrez changer le explicit-exit-notify
valeur de la directive à partir de 1
à 0
, car cette directive n'est utilisée que par UDP. Ne pas le faire lors de l'utilisation de TCP entraînera des erreurs lorsque vous démarrerez le service OpenVPN.
Trouvez le explicit-exit-notify
ligne à la fin du fichier et changez la valeur en 0
:
# 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 laisser ces paramètres inchangés.
(Facultatif) Pointer sur les informations d'identification non par défaut
Si vous avez sélectionné un nom différent lors du ./easyrsa gen-req server
commande plus tôt, modifiez le cert
et key
lignes dans le server.conf
fichier de configuration afin qu'ils pointent vers le .crt
approprié et .key
des dossiers. Si vous avez utilisé le nom par défaut, server
, ceci est déjà correctement défini :
cert server.crt
key server.key
Lorsque vous avez terminé, enregistrez et fermez le fichier.
Vous avez maintenant terminé la configuration de vos paramètres généraux OpenVPN. À l'étape suivante, vous personnaliserez les options de mise en réseau du serveur.
Étape 8 - Ajustement de la configuration réseau du serveur OpenVPN
Certains aspects de la configuration réseau du serveur doivent être modifiés afin qu'OpenVPN puisse acheminer correctement le trafic via 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 à la fonctionnalité VPN que votre serveur fournira.
Pour régler le paramètre de transfert IP par défaut de votre serveur OpenVPN, ouvrez le fichier /etc/sysctl.conf
fichier utilisant nano
ou votre éditeur préféré :
- sudo nano /etc/sysctl.conf
Ajoutez ensuite la ligne suivante en bas du fichier :
/etc/sysctl.confnet.ipv4.ip_forward = 1
Enregistrez et fermez le fichier lorsque vous avez terminé.
Pour lire le fichier et charger les nouvelles valeurs pour la session en cours, tapez :
- sudo sysctl -p
Outputnet.ipv4.ip_forward = 1
Désormais, votre serveur OpenVPN pourra transférer le trafic entrant d'un périphérique Ethernet à un autre. Ce paramètre garantit que le serveur peut diriger le trafic des clients qui se connectent sur l'interface VPN virtuelle vers ses autres périphériques Ethernet physiques. Cette configuration acheminera tout le trafic Web de votre client via l'adresse IP de votre serveur, et l'adresse IP publique de votre client sera effectivement masquée.
À l'étape suivante, vous devrez configurer certaines règles de pare-feu pour vous assurer que le trafic vers et depuis votre serveur OpenVPN circule correctement.
Étape 9 - Configuration du pare-feu
Jusqu'à présent, vous avez installé OpenVPN sur votre serveur, l'avez configuré et généré les clés et les certificats nécessaires pour que votre client accède au VPN. Cependant, vous n'avez pas encore fourni à OpenVPN d'instructions sur l'endroit où envoyer le trafic Web entrant des clients. Vous pouvez stipuler comment le serveur doit gérer le trafic client en établissant des règles de pare-feu et des configurations de routage.
En supposant que vous ayez suivi les prérequis au début de ce tutoriel, vous devriez déjà avoir ufw
installé et exécuté sur votre serveur. Pour autoriser OpenVPN à traverser le pare-feu, vous devez activer le masquage, un concept iptables qui fournit une traduction dynamique d'adresses réseau (NAT) à la volée pour acheminer correctement les connexions client.
Avant d'ouvrir le fichier de configuration du pare-feu pour ajouter les règles de masquage, vous devez d'abord trouver l'interface réseau publique de votre machine. Pour cela, tapez :
- ip route list default
Votre interface publique est la chaîne trouvée dans la sortie de cette commande qui suit le mot "dev". Par exemple, ce résultat montre l'interface nommée eth0
, mis en évidence ci-dessous :
Outputdefault via 159.65.160.1 dev eth0 proto static
Lorsque vous avez l'interface associée à votre route par défaut, ouvrez le /etc/ufw/before.rules
fichier pour ajouter la configuration appropriée :
- sudo nano /etc/ufw/before.rules
Les règles UFW sont généralement ajoutées à l'aide de ufw
commande. Règles répertoriées dans le before.rules
file, though, are read and put into place before the conventional UFW rules are loaded. Towards the top of the file, add the highlighted lines below. This will set the default policy for the POSTROUTING
chain in the nat
table and masquerade any traffic coming from the VPN. Remember to replace eth0
in the -A POSTROUTING
line below with the interface you found in the above command:
#
# 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 eth0 (change to the interface you discovered!)
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES
# Don't delete these required lines, otherwise there will be errors
*filter
. . .
Save and close the file when you are finished.
Next, you need to tell UFW to allow forwarded packets by default as well. To do this, open the /etc/default/ufw
fichier :
- sudo nano /etc/default/ufw
Inside, find the DEFAULT_FORWARD_POLICY
directive and change the value from DROP
to ACCEPT
:
DEFAULT_FORWARD_POLICY="ACCEPT"
Save and close the file when you are finished.
Next, adjust the firewall itself to allow traffic to OpenVPN. If you did not change the port and protocol in the /etc/openvpn/server.conf
file, you will need to open up UDP traffic to port 1194
. If you modified the port and/or protocol, substitute the values you selected here.
In case you forgot to add the SSH port when following the prerequisite tutorial, add it here as well:
- sudo ufw allow 1194/udp
- sudo ufw allow OpenSSH
Remarque :If you are using a different firewall or have customized your UFW configuration, you may need to add additional firewall rules. For example, if you decide to tunnel all of your network traffic over the VPN connection, you will need to ensure that port 53
traffic is allowed for DNS requests, and ports like 80
and 443
for HTTP and HTTPS traffic respectively. If there are other protocols that you are using over the VPN then you will need to add rules for them as well.
After adding those rules, disable and re-enable UFW to restart it and load the changes from all of the files you’ve modified:
- sudo ufw disable
- sudo ufw enable
Your server is now configured to correctly handle OpenVPN traffic. With the firewall rules in place, you can start the OpenVPN service on the server.
Step 10 — Starting OpenVPN
OpenVPN runs as a systemd
service, so you can use systemctl
to manage it. You will configure OpenVPN to start up at boot so you can connect to your VPN at any time as long as your server is running. To do this, enable the OpenVPN service by adding it to systemctl
:
- sudo systemctl -f enable [email protected]
Then start the OpenVPN service:
- sudo systemctl start [email protected]
Double check that the OpenVPN service is active with the following command. You should see active (running)
in the output:
- sudo systemctl status [email protected]
Output● [email protected] - OpenVPN service for server
Loaded: loaded (/lib/systemd/system/[email protected]; enabled; vendor preset: enabled)
Active: active (running) since Thu 2022-04-21 17:58:24 UTC; 6s ago
Docs: man:openvpn(8)
https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
https://community.openvpn.net/openvpn/wiki/HOWTO
Main PID: 144351 (openvpn)
Status: "Initialization Sequence Completed"
Tasks: 1 (limit: 4665)
Memory: 1.8M
CPU: 27ms
CGroup: /system.slice/system-openvpn\x2dserver.slice/[email protected]
└─144351 /usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --config server.conf
. . .
You have now completed the server-side configuration for OpenVPN. Next, you will configure your client machine and connect to the OpenVPN Server.
Step 11 — Creating the Client Configuration Infrastructure
Creating configuration files for OpenVPN clients can be somewhat involved, as every client must have its own config and each must align with the settings outlined in the server’s configuration file. Rather than writing a single configuration file that can only be used on one client, this step outlines a process for building a client configuration infrastructure which you can use to generate config files on-the-fly. You will first create a “base” configuration file then build a script which will allow you to generate unique client config files, certificates, and keys as needed.
Get started by creating a new directory where you will store client configuration files within the client-configs
directory you created earlier:
- mkdir -p ~/client-configs/files
Next, copy an example client configuration file into the client-configs
directory to use as your base configuration:
- cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf
Open this new file using nano
or your preferred text editor:
- nano ~/client-configs/base.conf
Inside, locate the remote
directive. This points the client to your OpenVPN server address — the public IP address of your OpenVPN server. If you decided to change the port that the OpenVPN server is listening on, you will also need to change 1194
to the port you selected:
. . .
# 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
. . .
Be sure that the protocol matches the value you are using in the server configuration:
~/client-configs/base.confproto udp
Next, uncomment the user
et group
directives by removing the ;
sign at the beginning of each line:
# Downgrade privileges after initialization (non-Windows only)
user nobody
group nogroup
Find the directives that set the ca
, cert
, and key
. Comment out these directives since you will add the certs and keys within the file itself shortly:
# 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
Similarly, comment out the tls-auth
directive, as you will add ta.key
directly into the client configuration file (and the server is set up to use tls-crypt
):
# If a tls-auth key is used on the server
# then every client must also have the key.
;tls-auth ta.key 1
Mirror the cipher
and auth
settings that you set in the /etc/openvpn/server/server.conf
fichier :
cipher AES-256-GCM
auth SHA256
Next, add the key-direction
directive somewhere in the file. You must set this to “1” for the VPN to function correctly on the client machine:
key-direction 1
Finally, add a few commented out lines to handle various methods that Linux based VPN clients will use for DNS resolution. You’ll add two similar, but separate sets of commented out lines. The first set is for clients that do not use systemd-resolved
to manage DNS. These clients rely on the resolvconf
utility to update DNS information for Linux clients.
; script-security 2
; up /etc/openvpn/update-resolv-conf
; down /etc/openvpn/update-resolv-conf
Now add another set of lines for clients that use systemd-resolved
for DNS resolution:
; script-security 2
; up /etc/openvpn/update-systemd-resolved
; down /etc/openvpn/update-systemd-resolved
; down-pre
; dhcp-option DOMAIN-ROUTE .
Save and close the file when you are finished.
Later in Step 13 - Installing the Client Configuration step of this tutorial you will learn how to determine how DNS resolution works on Linux clients and which section to uncomment.
Next, you’ll create a script that will compile your base configuration with the relevant certificate, key, and encryption files and then place the generated configuration in the ~/client-configs/files
annuaire. Open a new file called make_config.sh
within the ~/client-configs
répertoire :
- nano ~/client-configs/make_config.sh
Inside, add the following content:
~/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-crypt>') \
${KEY_DIR}/ta.key \
<(echo -e '</tls-crypt>') \
> ${OUTPUT_DIR}/${1}.ovpn
Save and close the file when you are finished.
Before moving on, be sure to mark this file as executable by typing:
- chmod 700 ~/client-configs/make_config.sh
This script will make a copy of the base.conf
file you made, collect all the certificate and key files you’ve created for your client, extract their contents, append them to the copy of the base configuration file, and export all of this content into a new client configuration file. This means that, rather than having to manage the client’s configuration, certificate, and key files separately, all the required information is stored in one place. The benefit of using this method is that if you ever need to add a client in the future, you can run this script to quickly create a new config file and ensure that all the important information is stored in a single, easy-to-access location.
Please note that any time you add a new client, you will need to generate new keys and certificates for it before you can run this script and generate its configuration file. You will get some practice using this script in the next step.
Step 12 — Generating Client Configurations
If you followed along with the guide, you created a client certificate and key named client1.crt
and client1.key
, respectively, in Step 6. You can generate a config file for these credentials by moving into your ~/client-configs
directory and running the script you made at the end of the previous step:
- cd ~/client-configs
- ./make_config.sh client1
This will create a file named client1.ovpn
in your ~/client-configs/files
répertoire :
- ls ~/client-configs/files
Outputclient1.ovpn
You need to transfer this file to the device you plan to use as the client. For instance, this could be your local computer or a mobile device.
While the exact applications used to accomplish this transfer will depend on your device’s operating system and your personal preferences, a dependable and secure method is to use SFTP (SSH file transfer protocol) or SCP (Secure Copy) on the backend. This will transport your client’s VPN authentication files over an encrypted connection.
Here is an example SFTP command which you can run from your local computer (macOS or Linux). This will copy the client1.ovpn
file you created in the last step to your home directory:
- sftp sammy@openvpn_server_ip:client-configs/files/client1.ovpn ~/
Here are several tools and tutorials for securely transferring files from the OpenVPN server to a local computer:
- WinSCP
- How To Use SFTP to Securely Transfer Files with a Remote Server
- How To Use Filezilla to Transfer and Manage Files Securely on your VPS
Step 13 — Installing the Client Configuration
This section covers how to install a client VPN profile on Windows, macOS, Linux, iOS, and Android. None of these client instructions are dependent on one another, so feel free to skip to whichever is applicable to your device.
The OpenVPN connection will have the same name as whatever you called the .ovpn
dossier. In regards to this tutorial, this means that the connection is named client1.ovpn
, aligning with the first client file you generated.
Windows
Installing
Download the OpenVPN client application for Windows from OpenVPN’s Downloads page. Choose the appropriate installer version for your version of Windows.
Remarque :OpenVPN needs administrative privileges to install.
After installing OpenVPN, copy the .ovpn
file to:
C:\Program Files\OpenVPN\config
When you launch OpenVPN, it will automatically locate the profile and make it available.
You must run OpenVPN as an administrator each time it’s used, even by administrative accounts. To do this without having to right-click and select Run as administrator every time you use the VPN, you must preset this from an administrative account. This also means that standard users will need to enter the administrator’s password to use OpenVPN. On the other hand, standard users can’t properly connect to the server unless the OpenVPN application on the client has admin rights, so the elevated privileges are necessary.
To set the OpenVPN application to always run as an administrator, right-click on its shortcut icon and go to Properties . At the bottom of the Compatibility tab, click the button to Change settings for all users . In the new window, check Run this program as an administrator .
Connecting
Each time you launch the OpenVPN GUI, Windows will ask if you want to allow the program to make changes to your computer. Click Yes . Launching the OpenVPN client application only puts the applet in the system tray so that you can connect and disconnect the VPN as needed; it does not actually make the VPN connection.
Once OpenVPN is started, initiate a connection by going into the system tray applet and right-clicking on the OpenVPN applet icon. This opens the context menu. Select client1 at the top of the menu (that’s your client1.ovpn
profile) and choose Connect .
A status window will open showing the log output while the connection is established, and a message will show once the client is connected.
Disconnect from the VPN the same way:Go into the system tray applet, right-click the OpenVPN applet icon, select the client profile and click Disconnect .
macOS
Installing
Tunnelblick is a free, open source OpenVPN client for macOS. You can download the latest disk image from the Tunnelblick Downloads page. Double-click the downloaded .dmg
file and follow the prompts to install.
Towards the end of the installation process, Tunnelblick will ask if you have any configuration files. Answer I have configuration files and let Tunnelblick finish. Open a Finder window and double-click client1.ovpn
. Tunnelblick will install the client profile. Administrative privileges are required.
Connecting
Launch Tunnelblick by double-clicking the Tunnelblick icon in the Applications dossier. Once Tunnelblick has been launched, there will be a Tunnelblick icon in the menu bar at the top right of the screen for controlling connections. Click on the icon, and then the Connect client1 menu item to initiate the VPN connection. If you are using custom DNS settings with Tunnelblick, you may need check “Allow changes to manually-set network settings” in the advanced configuration dialog.
Linux
Installing
If you are using Linux, there are a variety of tools that you can use depending on your distribution. Your desktop environment or window manager might also include connection utilities.
The most universal way of connecting, however, is to just use the OpenVPN software.
On Ubuntu or Debian, you can install it just as you did on the server by typing:
- sudo apt update
- sudo apt install openvpn
On CentOS you can enable the EPEL repositories and then install it by typing:
- sudo dnf install epel-release
- sudo dnf install openvpn
Configuring Clients that use systemd-resolved
First determine if your system is using systemd-resolved
to handle DNS resolution by checking the /etc/resolv.conf
fichier :
- cat /etc/resolv.conf
Output# This file is managed by man:systemd-resolved(8). Do not edit.
. . .
nameserver 127.0.0.53
options edns0
If your system is configured to use systemd-resolved
for DNS resolution, the IP address after the nameserver
option will be 127.0.0.53
. There should also be comments in the file like the output that is shown that explain how systemd-resolved
is managing the file. If you have a different IP address than 127.0.0.53
then chances are your system is not using systemd-resolved
and you can go to the next section on configuring Linux clients that have an update-resolv-conf
script instead.
To support these clients, first install the openvpn-systemd-resolved
emballer. It provides scripts that will force systemd-resolved
to use the VPN server for DNS resolution.
- sudo apt install openvpn-systemd-resolved
One that package is installed, configure the client to use it, and to send all DNS queries over the VPN interface. Open the client’s VPN file:
- nano client1.ovpn
Now uncomment the following lines that you added earlier:
client1.ovpnscript-security 2
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre
dhcp-option DOMAIN-ROUTE .
Configuring Clients that use update-resolv-conf
If your system is not using systemd-resolved
to manage DNS, check to see if your distribution includes an /etc/openvpn/update-resolv-conf
script instead:
- ls /etc/openvpn
Outputupdate-resolv-conf
If your client includes the update-resolv-conf
file, then edit the OpenVPN client configuration file that you transferred earlier:
- nano client1.ovpn
Uncomment the three lines you added to adjust the DNS settings:
client1.ovpnscript-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
If you are using CentOS, change the group
directive from nogroup
to nobody
to match the distribution’s available groups:
group nobody
Enregistrez et fermez le fichier.
Connecting
Now, you can connect to the VPN by just pointing the openvpn
command to the client configuration file:
- sudo openvpn --config client1.ovpn
This should connect you to your VPN.
Remarque : If your client uses systemd-resolved
to manage DNS, check the settings are applied correctly by running the systemd-resolve --status
command like this:
- systemd-resolve --status tun0
You should see output like the following:
OutputLink 22 (tun0)
. . .
DNS Servers: 208.67.222.222
208.67.220.220
DNS Domain: ~.
If you see the IP addresses of the DNS servers that you configured on the OpenVPN server, along with the ~.
setting for DNS Domain in the output, then you have correctly configured your client to use the VPN server’s DNS resolver. You can also check that you are sending DNS queries over the VPN by using a site like DNS leak test.com.
iOS
Installing
From the iTunes App Store, search for and install OpenVPN Connect, the official iOS OpenVPN client application. To transfer your iOS client configuration onto the device, connect it directly to a computer.
The process of completing the transfer with iTunes is outlined here. Open iTunes on the computer and click on iPhone> apps . Scroll down to the bottom to the File Sharing section and click the OpenVPN app. The blank window to the right, OpenVPN Documents , is for sharing files. Drag the .ovpn
file to the OpenVPN Documents window.
Now launch the OpenVPN app on the iPhone. You will receive a notification that a new profile is ready to import. Tap the green plus sign to import it.
Connecting
OpenVPN is now ready to use with the new profile. Start the connection by sliding the Connect button to the On position. Disconnect by sliding the same button to Off .
Remarque :The VPN switch under Settings cannot be used to connect to the VPN. If you try, you will receive a notice to only connect using the OpenVPN app.
Android
Installing
Open the Google Play Store. Search for and install Android OpenVPN Connect, the official Android OpenVPN client application.
You can transfer the .ovpn
profile by connecting the Android device to your computer by USB and copying the file over. Alternatively, if you have an SD card reader, you can remove the device’s SD card, copy the profile onto it and then insert the card back into the Android device.
Start the OpenVPN app and tap the FILE
menu to import the profile.
Then navigate to the location of the saved profile (the screenshot uses /storage/emulated/0/openvpn
) and select your .ovpn
dossier. Tap the IMPORT
button to finish importing this profile.
Connecting Once the profile is added, you will see a screen like this:
To connect, tap the toggle button close to the profile you want to use. You’ll see real time stats of your connection and traffic being routed through your OpenVPN server:
To disconnect, just tap the toggle button on the top left once again. You will be prompted to confirm that you want to disconnect from your VPN.
Step 14 — Testing Your VPN Connection (Optional)
Remarque : This method for testing your VPN connection will only work if you opted to route all your traffic through the VPN in Step 7 when you edited the server.conf
file for OpenVPN.
Once everything is installed, a simple check confirms everything is working properly. Without having a VPN connection enabled, open a browser and go to DNSLeakTest.
The site will return the IP address assigned by your internet service provider and as you appear to the rest of the world. To check your DNS settings through the same website, click on Extended Test and it will tell you which DNS servers you are using.
Now connect the OpenVPN client to your Droplet’s VPN and refresh the browser. A completely different IP address (that of your VPN server) should now appear, and this is how you appear to the world. Again, DNSLeakTest’s Extended Test will check your DNS settings and confirm you are now using the DNS resolvers pushed by your VPN.
Step 15 — Revoking Client Certificates
Occasionally, you may need to revoke a client certificate to prevent further access to the OpenVPN server.
To do so, follow the example in the prerequisite tutorial on How to Set Up and Configure a Certificate Authority on Ubuntu 22.04 under the Revoking a Certificate rubrique.
Once you have revoked a certificate for a client using those instructions, you’ll need to copy the generated crl.pem
file to your OpenVPN server in the /etc/openvpn/server
répertoire :
- sudo cp /tmp/crl.pem /etc/openvpn/server/
Next, open the OpenVPN server configuration file:
- sudo nano /etc/openvpn/server/server.conf
At the bottom of the file, add the crl-verify
option, which will instruct the OpenVPN server to check the certificate revocation list that you created each time a connection attempt is made:
crl-verify crl.pem
Enregistrez et fermez le fichier.
Finally, restart OpenVPN to implement the certificate revocation:
- sudo systemctl restart [email protected]
The client should no longer be able to successfully connect to the server using the old credential.
To revoke additional clients, follow this process:
- Revoke the certificate with the
./easyrsa revoke client_name
commande - Generate a new CRL
- Transfer the new
crl.pem
file to your OpenVPN server and copy it to the/etc/openvpn/server/
directory to overwrite the old list. - Restart the OpenVPN service.
You can use this process to revoke any certificates that you’ve previously issued for your server.
Conclusion
You should now have a fully operational virtual private network running on your OpenVPN Server. You can browse the web and download content without worrying about malicious actors tracking your activity.
There are several steps you could take to customize your OpenVPN installation even further, such as configuring your client to connect to the VPN automatically or configuring client-specific rules and access policies. For these and other OpenVPN customizations, you should consult the official OpenVPN documentation.
To configure more clients, you only need to follow steps 6 and 11-13 for each additional device. To revoke access to clients, follow step 15 .