Outils pour utilisateurs

Outils du site


documentation:technique:openvpn:easy-rsa

Easy-RSA pour OpenVPN

Easy-RSA est un utilitaire en ligne de commande pour faciliter la génération et la signature de clés pour OpenVPN. La documentation sur laquelle nous nous basons est celle d'Archlinux.

Pré-requis

  • easy-rsa >= 3

Vu les dépendances, sous Debian Stretch, on peut directement aller télécharger le paquet en Debian Testing :

CA racine

Sur une machine à part (pas schizophylle), on va mettre en place le CA racine qui signera les autres certificats.

Création du CA racine

  1. Initialiser un dossier avec easy-rsa : make-cadir ./root-ca
  2. Aller dans ce dossier pour la suite des opérations : cd ./root-ca
  3. Modifier la configuration de ./vars, afin d'avoir les informations de l'organisation dans le certificat (mode=org) et une taille de 4096 :
    set_var EASYRSA_DN  "org"
    
    set_var EASYRSA_REQ_COUNTRY    "FR"
    set_var EASYRSA_REQ_PROVINCE   "ChNord"
    set_var EASYRSA_REQ_CITY       "Lille"
    set_var EASYRSA_REQ_ORG        "Mycelium FAI"
    set_var EASYRSA_REQ_EMAIL      "contact@mycelium-fai.org"
    set_var EASYRSA_REQ_OU         "Mycelium Security Department"
    
    set_var EASYRSA_KEY_SIZE	4096
  4. Créer la paire de clé du CA racine, en utilisant un mot de passe dédié :
    ./easyrsa init-pki
    ./easyrsa build-ca

À la commande ./easyrsa build-ca, le Common Name est demandé, mettre CA Racine.

Point sécurité

Le fichier le plus important à mettre dans le coffre fort est le fichier /etc/easyrsa/pki/private/ca.key ainsi que son mot de passe. Cette clé doit être utiliser uniquement pour la signature des certificats CA intermédiaires.

Création du CA intermédiaire

Cette procédure est à faire sur le serveur VPN (schizophylle), créer la paire de clé du CA intémédiaire.

Modifier le fichier /etc/easyrsa/vars. Dé-commenter et modifier les lignes suivantes.

set_var EASYRSA_REQ_COUNTRY    "FR"
set_var EASYRSA_REQ_PROVINCE   "Ch'Nord"
set_var EASYRSA_REQ_CITY       "Lille"
set_var EASYRSA_REQ_ORG        "Mycelium FAI"
set_var EASYRSA_REQ_EMAIL      "contact@mycelium-fai.org"
set_var EASYRSA_REQ_OU         "VPN"

Maintenant, créer la clé privée du certificat CA intermédiaire. Utiliser le mot de passe dédié à ce certificat.

cd /etc/easyrsa
export EASYRSA=$(pwd)
easyrsa init-pki
easyrsa build-ca subca

A la commande easyrsa build-ca subca le Common Name est demandé, mettre Mycelium FAI - CA Intermediaire.

Signer la demande du CA intermédiaire au CA racine

A la génération précédente, un fichier /etc/easyrsa/pki/reqs/ca.req a été créé. Il faut envoyer ce fichier dans le répertoire /tmp du serveur où il y a le CA racine.

Exemple:

scp /etc/easyrsa/pki/reqs/ca.req root@server-ca-racine:/tmp/ca-intermediaire.req

Signature du CA intermédiaire

Se connecter sur le serveur où se trouve le CA racine et signer la demande du CA intermédiaire.

Importation

cd /etc/easy-rsa-ca-root
export EASYRSA=$(pwd)
easyrsa import-req /tmp/ca-intermediaire.req ca-intermediaire
rm /tmp/ca-intermediaire.req

Signature

easyrsa sign-req ca ca-intermediaire

Une fois indiquée yes pour confirmer, le certificat CA intermédiaire est disponible /etc/easy-rsa-ca-root/pki/issued/ca-intermediaire.crt . Ce fichier est public est sera utilisé pour la connexion VPN du serveur et des clients.

Chainage des deux certificats CA

Pour le bon fonctionnement des connexions il faut chainer les deux certificats CA (racine et intermédiaire)

cat /etc/easy-rsa-ca-root/pki/ca.crt >> /etc/easy-rsa-ca-root/pki/issued/ca-intermediaire.crt

Copie du certificat CA intermédiaire sur le serveur

Depuis le serveur VPN récupérer le fichier ca-intermediaire.crt

cd /etc/easyrsa/pki
scp root@server-ca-racine:/etc/easy-rsa-ca-root/pki/issued/ca-intermediaire.crt .
mv ca-intermediaire.crt ca.crt

Serveur

Création des clés serveur

root@russule:# su -l certifications
certifications@russule:$ cd openvpn
certifications@russule:$ easyrsa gen-req russule nopass
certifications@russule:$ easyrsa sign-req server russule
certifications@russule:$ easyrsa show-cert russule full

Une fois indiquée yes pour confirmer, le certificat serveur est disponible. Ce fichier est public est sera utilisé pour la connexion VPN du serveur.

Installation des certificats serveur

cd /etc/openvpn/server
cp /home/certifications/openvpn/pki/ca.crt .
cp /home/certifications/openvpn/pki/private/schizophylle.key .
cp /home/certifications/openvpn/pki/issued/schizophylle.crt .

Client

Création de la paire de clé

Sur le poste client, en imaginant qu'il est sous Debian avec easy-rsa >=3 d'installé :

  1. Lancer un terminal, en tant qu'un utilisateur, et aller dans un dossier prévu pour
  2. Initialiser le dossier qui contiendra les certificats, avec easy-rsa : make-cadir ./mycelium-ca
  3. Aller dans ce dossier pour la suite des opérations : cd ./mycelium-ca
  4. Créer la paire de clé pour le client, en remplaçant adherent1 par le nom du client :
    ./easyrsa init-pki
    ./easyrsa gen-req adherent1 nopass

Signature de la demande

A la génération précédente, un fichier pki/reqs/adherent1.req a été créé. Il faut envoyer ce fichier dans le répertoire /tmp du serveur VPN. Par exemple :

scp pki/reqs/adherent1.req root@server-vpn:/tmp/adherent1.req

Se connecter ensuite sur le serveur où se trouve le CA intermédiaire.

Importation

cd /etc/easyrsa
export EASYRSA=$(pwd)
easyrsa import-req /tmp/adherent1.req adherent1
rm /tmp/adherent1.req

Signature

easyrsa sign-req client adherent1
easyrsa show-cert adherent1 full

Une fois indiquée yes pour confirmer, le certificat client est disponible /etc/easyrsa/pki/issued/adherent1.crt . Ce fichier est public est sera utilisé pour la connexion VPN du client.

Copie du certificat pour le client

Depuis le client VPN récupérer le fichier adherent1.crt

cd /etc/openvpn/client
scp root@server-vpn:/etc/easyrsa/pki/issued/adherent1.crt .
scp root@server-vpn:/etc/easyrsa/pki/ca.crt .
cp /etc/easyrsa/pki/private/adherent1.key .

En fonctions des droits sur le server-vpn, vous pourriez avoir besoin de deplacer en 2 coups :

# cp /etc/easyrsa/pki/issued/adherent1.crt /home/adherent1/
# chown adherent1 /home/adherent1/adherent1.crt

Les clés

Nom de fichier Utile à Utilité Secret ?
ca.crt Serveur et tous les clients Certificat CA intermédiaire Non
ca.key Clé signant la machine seulement Clé privée CA intermédiaire Oui
dh{n}.pem Serveur seulement Paramètres Diffie Hellman Non
ta.key Serveur et tous les clients Paramètres Handshake TLS Non
schizophylle.crt Serveur seulement Certificat serveur Non
schizophylle.key Serveur seulement Clé serveur Oui
adherent1.crt Client adhérent1 seulement Certificat Client adhérent1 Non
adherent1.key Client adhérent1 seulement Clé Client adhérent1 Oui
documentation/technique/openvpn/easy-rsa.txt · Dernière modification : 2022/12/04 22:19 de sragons

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki