OpenVPN : PKI
Nous voilà dans la deuxième partie des articles sur OpenVPN. Nous allons voir, maintenant, comment mettre en place une véritable configuration de VPN. Par « véritable configuration », j’entends « sécurisée », et utilisable de manière souple, en production. Nous allons donc mettre en place une infrastructure à clés publiques, et ainsi franchir le pas de la configuration de test à la configuration de prod… Allons-y!Après avoir mis en place une configuration facile, basée sur une clé privée (en suivant cet article), vous avez pu monter un tunnel VPN. La suite logique est maintenant d’apporter plusieurs choses, dont de la sécurité et de la souplesse. La sécurité sera apportée par une infrastructure à clé publique (PKI), et la souplesse par une configuration permettant à plusieurs clients de se connecter.
Construction de la PKI
Nous allons ici mettre en place l’infrastructure de clés publiques, pas à pas.
Tout d’abord (sur le serveur), nous allons lancer un batch :
Ouvrez une invite de commande (en tant qu’admin). Déplacez vous dans le répertoire easy-rsa d’OpenVPN, puis lancez le batch suivant :
init-config
Il va créer les fichiers vars.bat et openssl.cnf.
Maintenant, éditez le fichier C:\Program Files\OpenVPN\easy-rsa\vars.bat afin de remplir les bonnes informations.
Renseignez ces variables :
set KEY_COUNTRY=FR
set KEY_PROVINCE=FR
set KEY_CITY=MaVille
set KEY_ORG=NomSociété
set [email protected]
Ensuite, ouvrez une invite de commande (en tant qu’admin). Déplacez vous dans le répertoire easy-rsa. Ensuite nous allons effectuer plusieurs actions.
Nous allons tout d’abord initialiser les variables
vars
Ensuite, nettoyez le fichier des clés et supprimez toute ancienne clés (pas nécessaire si c’est votre première installation sur la machine, ou si vous souhaitez conserver les anciennes clés).
clean-all.bat
Maintenons, nous allons créer l’autorité de certification (CA).
build-ca.bat
Cette commande va créer la clé privée du CA et son certificat . Ce certificat contient la clé publique. C’est le module OpenSSL qui est appelé à travers ce batch.
Si vous obtenez l’erreur « ‘openssl’ n’est pas reconnu en tant que commande interne« , il vous faut modifier le fichier build-ca.bat.
Remplacez, au début de la dernière ligne openssl par « C:\Program Files\OpenVPN\bin\openssl »
Lors de la création, les variables préalablement renseignées vont vous être proposées. Acceptez. Il n’y aura que le « Common Name » qui devra être renseigné (définissez le nom de la CA)
Maintenons, créer la clé privée et le certificat du serveur OpenVPN
build-key-server.bat nom_du_server
Cette commande va créer la clé privée du serveur et son certificat . Lors de la création, les variables préalablement renseignées vont vous être proposées. Acceptez. Il n’y aura que le « Common Name » qui devra être renseigné (renseigner par exemple le nom du serveur est une bonne convention).
Maintenant, même chose pour le client
build-key.bat nom_du_client
Pour chaque client, relancez la génération de la clé et de son certificat, en changeant le nom du client.
Dernière chose : Nous allons mettre en place un dispositif cryptographique nommé « Diffie Hellman ». C’est un échange de clés utilisé par deux équipements pour établir une clef partagée connue d’eux seuls. La configuration est à mettre en place seulement côté serveur.
build-dh.bat
Mise en place de la configuration
Nous avons maintenant un certain nombre de fichiers dans le répertoire config. Afin de mettre en place la solution VPN, nous allons devoir copier les fichiers nécessaires à chaque équipement.
Voilà une liste des copies à faire :
Nom du fichier | Serveur | Clients |
ca.crt | X | X |
ca.key | X | X |
dh1024.pem | X | |
server.crt | X | |
server.key | X | |
client1.crt | X | |
client1.key | X | |
client2.crt | X | |
client2.key | X |
N’oubliez pas, les fichiers key doivent absolument être gardés précieusement secrets. Il faut donc les transférer par des moyens sécurisés, pour qu’ils ne soient pas interceptés.
Configuration des éléments
Nous allons maintenant configurer le serveur, ainsi que les clients, afin que le VPN puisse être utilisable.
Pour chacun de ces éléments, voici ce que je propose :
Rendez-vous dans « C:\Program Files\OpenVPN\sample-config ». Ici, vous avez des fichiers de configuration standards. Un pour chaque type de communiquant (client et server). Prenez le, et copiez le dans le répertoire « config ». Renommez le si vus voulez, pour qu’il soit plus parlant.
Ensuite, nous allons les modifier.
Il vous faut renseigner les localisations des fichiers certificats et clés.
Deux solutions :
Soit vous copiez les fichiers directement dans le répertoire config, et là vous n’avez qu’à renseigner les noms corrects.
Soit vous laissez les fichiers dans le répertoire RSA. Dans ce cas, indiquez la localisation de ces fichiers avec ce format :
ca "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\ca.crt"
Spécificités clients
Dans le fichier de configuration, vous devez modifier la ligne qui concerne le serveur auquel s’adresser :
remote adresseIP_ou_nom_de_domaine 1194
Dernière chose, il faudra, spécifiquement sur les clients Windows, ajouter cette option :
# Méthode de gestion des routes route-method exe
Elle indique au client d’utiliser l’outil route.exe pour paramétrer les routes, plutôt que l’API Windows IP Helper. Cette dernière, utilisée par défaut, ne fonctionne pas très bien.
Voilà, vous avez mis en place une connexion VPN sécurisée, fonctionnelle.
En elle même, elle est fonctionnelle, mais un article arrive bientôt pour vous guider dans la sécurisation de l’accès réseau, lorsqu’un VPN est en place.
Dans le prochain article, découvrez comment utiliser votre connexion VPN depuis n’importe où, grâce à une configuration de type « Roadwarrior ».
Article suivant : OpenVPN : Roadwarrior
Merci pour les articles.
Si ca peut te servir! 😉
Merci pour ces articles =)
En espérant que ça vous serve!