Vous avez un EdgeRouterX Ubiquiti (EdgeOS) et vous voulez pouvoir accéder à votre réseau local depuis l'extérieur, en toute sécurité ? Dans ce tuto, on monte pas à pas un serveur OpenVPN directement sur le routeur, puis on configure les clients Windows et macOS pour s'y connecter. À la fin, vous saurez aussi comment renouveler vos certificats quand ils arrivent à expiration.
Pré-requis : un accès CLI à l'EdgeRouter (via le bouton dédié de l'interface web ou un client SSH comme PuTTY), et quelques bases en réseau.
Étape 1 : Vérifier la date et l'heure du routeur
Les certificats qu'on va générer ont une durée de validité calculée à partir de l'horloge du routeur. Première chose à faire :
show date
Si la date est fausse, corrigez-la avant d'aller plus loin.
Étape 2 : Passer en root
sudo su
Étape 3 : Générer la clé Diffie-Hellman
openssl dhparam -out /config/auth/dh.pem -2 2048
Étape 4 — Aller dans le répertoire des scripts SSL
cd /usr/lib/ssl/misc
Étape 5 — Créer l'autorité de certification (CA)
./CA.pl -newca
Le script vous demande une phrase secrète et quelques informations (pays, organisation...). Notez bien la phrase secrète, vous en aurez besoin pour signer chaque certificat.
À savoir : sur les firmwares EdgeOS antérieurs à la 2.0.0, le script s'appelle
CA.shau lieu deCA.pl.
Étape 6 : Copier le certificat racine
cp demoCA/cacert.pem /config/auth
cp demoCA/private/cakey.pem /config/auth
Étape 7 : Générer la demande de certificat serveur
./CA.pl -newreq
Donnez-lui le Common Name server.
Étape 8 : Signer le certificat serveur
./CA.pl -sign
Confirmez avec y.
Étape 9 : Déplacer et renommer les fichiers serveur
mv newcert.pem /config/auth/server.pem
mv newkey.pem /config/auth/server.key
Étape 10 : Générer un certificat pour le premier client
Même principe : nouvelle demande, signature, puis renommage.
./CA.pl -newreq
./CA.pl -sign
mv newcert.pem /config/auth/client1.pem
mv newkey.pem /config/auth/client1.key
Étape 11 : Répéter pour chaque client supplémentaire
./CA.pl -newreq
./CA.pl -sign
mv newcert.pem /config/auth/client2.pem
mv newkey.pem /config/auth/client2.key
Étape 12 : Retirer le mot de passe des clés ⚠️
Cette étape est obligatoire côté serveur. Sans elle, l'interface vtun0 affichera « TBD » sur le dashboard et le tunnel ne démarrera jamais. Côté client, c'est facultatif (sinon il faudra saisir un mot de passe à chaque connexion).
openssl rsa -in /config/auth/server.key -out /config/auth/server-no-pass.key
openssl rsa -in /config/auth/client1.key -out /config/auth/client1-no-pass.key
openssl rsa -in /config/auth/client2.key -out /config/auth/client2-no-pass.key
Étape 13 : Remplacer les anciennes clés
mv /config/auth/server-no-pass.key /config/auth/server.key
mv /config/auth/client1-no-pass.key /config/auth/client1.key
mv /config/auth/client2-no-pass.key /config/auth/client2.key
Étape 14 : Ouvrir les droits de lecture des clés clients
chmod 644 /config/auth/client1.key
chmod 644 /config/auth/client2.key
Étape 15 : Vérifier le contenu du dossier
ls -l /config/auth
Vous devez retrouver : cacert.pem, cakey.pem, dh.pem, server.pem/server.key, et les paires .pem/.key de chaque client.
Étape 16 : Sortir du mode root
exit
Étape 17 : Passer en mode configuration
configure
Étape 18 : Autoriser le port OpenVPN dans le pare-feu
set firewall name WAN_LOCAL rule 30 action accept
set firewall name WAN_LOCAL rule 30 description openvpn
set firewall name WAN_LOCAL rule 30 destination port 1194
set firewall name WAN_LOCAL rule 30 protocol udp
Étape 19 : Configurer l'interface du tunnel
set interfaces openvpn vtun0 mode server
set interfaces openvpn vtun0 server subnet 172.16.1.0/24
set interfaces openvpn vtun0 server push-route 192.168.1.0/24
set interfaces openvpn vtun0 server name-server 192.168.1.1
Étape 20 : Associer les certificats à l'interface
set interfaces openvpn vtun0 tls ca-cert-file /config/auth/cacert.pem
set interfaces openvpn vtun0 tls cert-file /config/auth/server.pem
set interfaces openvpn vtun0 tls key-file /config/auth/server.key
set interfaces openvpn vtun0 tls dh-file /config/auth/dh.pem
Étape 21 : Activer le DNS forwarding sur l'interface
set service dns forwarding listen-on vtun0
Étape 22 : Valider et sauvegarder
commit ; save
💡 Les étapes 17 à 22 peuvent s'enchaîner directement, une fois en mode configuration.
Votre serveur OpenVPN est opérationnel !
Configurer le client Windows
- Allez dans
C:\Program Files\OpenVPN\config\ - Créez un fichier
er.ovpn - Transférez depuis l'EdgeRouter (via WinSCP par exemple) les fichiers
cacert.pem,client1.pemetclient1.key - Complétez
er.ovpnavec ce contenu (remplacez<server>par l'IP publique ou le nom d'hôte) :
client
dev tun
proto udp
remote <server> 1194
float
resolv-retry infinite
nobind
persist-key
persist-tun
verb 3
ca cacert.pem
cert client1.pem
key client1.key
- (Optionnel) Pour rediriger tout le trafic Internet via le VPN, ajoutez :
redirect-gateway def1
- Lancez la connexion depuis votre client OpenVPN Windows.
Configurer le client macOS
- Créez le dossier et le fichier de config :
mkdir ~/Desktop/config
touch ~/Desktop/config/er.ovpn
- Récupérez les fichiers via SCP :
scp username@<ip-address>:/config/auth/cacert.pem ~/Desktop/config
scp username@<ip-address>:/config/auth/client1.pem ~/Desktop/config
scp username@<ip-address>:/config/auth/client1.key ~/Desktop/config
- Complétez
er.ovpnavec le même contenu que pour Windows. - Connectez-vous avec un client comme Tunnelblick.
Bonus : renouveler les certificats avant expiration
Les certificats générés via CA.pl sont valables un an par défaut. Vérifiez la date d'expiration avec :
openssl x509 -in /config/auth/server.pem -noout -enddate
Ce qu'il ne faut surtout PAS refaire :
- Régénérer la CA (
CA.pl -newca) → invaliderait tous les certificats déjà signés - Régénérer la clé Diffie-Hellman → elle n'expire pas
- Toucher à la config de
vtun0ou au pare-feu → les noms de fichiers ne changent pas
Pour renouveler le certificat serveur :
sudo su
cd /usr/lib/ssl/misc
./CA.pl -newreq
./CA.pl -sign
mv newcert.pem /config/auth/server.pem
mv newkey.pem /config/auth/server.key
openssl rsa -in /config/auth/server.key -out /config/auth/server-no-pass.key
mv /config/auth/server-no-pass.key /config/auth/server.key
configure
commit ; save
exit
💡 Si l'interface ne reprend pas les nouveaux fichiers, désactivez/réactivez
vtun0ou redémarrez le service OpenVPN.
Pour renouveler un certificat client expiré : même logique (CA.pl -newreq puis -sign), renommage des fichiers, retrait du mot de passe, puis retransfert vers le poste client. Le fichier er.ovpn lui-même n'a pas besoin d'être modifié.
Pour résumer
| Élément | À refaire ? |
|---|---|
| Certificat racine (CA) | Non |
| Clé Diffie-Hellman | Non |
| Certificat serveur | Oui (chaque année) |
| Certificat client | Oui, si expiré |
| Pare-feu / interface vtun0 | Non |
Fichier .ovpn |
Non (sauf changement d'IP) |
Et voilà, vous avez un accès VPN chiffré et fiable à votre réseau local, géré entièrement depuis votre EdgeRouter sans dépendre d'un service tiers ;)
