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 - easy-rsa/stable 3.1.0-1 all dans bookworm

CA racine

Sur une machine à part (pas russule), 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 :
    set_var EASYRSA_DIGEST          "sha512"
    
    set_var EASYRSA_ALGO            ec
    set_var EASYRSA_CURVE           secp521r1
    
    set_var EASYRSA_CA_EXPIRE       36500
    set_var EASYRSA_CERT_EXPIRE     36500
    
    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"
  4. Créer la paire de clé du CA racine, en utilisant un mot de passe dédié :
    ./easyrsa init-pki
    ./easyrsa build-ca
    # Common Name: CA Racine

À 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 (russule, lxc openvpn).

  1. Initialiser un dossier avec easy-rsa : make-cadir /etc/easy-rsa
  2. Aller dans ce dossier pour la suite des opérations : cd /etc/easy-rsa
  3. Modifier la configuration de ./vars, afin d'avoir :
    set_var EASYRSA_DIGEST          "sha512"
    
    set_var EASYRSA_ALGO            ec
    set_var EASYRSA_CURVE           secp521r1
    
    set_var EASYRSA_CA_EXPIRE       36500
    
    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"
  4. Créer la paire de clé du CA racine, en utilisant un mot de passe dédié :
    ./easyrsa init-pki
    ./easyrsa build-ca subca
    # Common Name: 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/easy-rsa/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
./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/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/pki/ca.crt >> /etc/easy-rsa/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/easy-rsa/pki
scp root@server-ca-racine:/etc/easy-rsa/pki/issued/ca-intermediaire.crt .
mv ca-intermediaire.crt ca.crt

Serveur

Création des clés serveur

cd /etc/easy-rsa
./easyrsa gen-req russule nopass
./easyrsa sign-req server 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/crypto
cp /etc/easy-rsa/pki/ca.crt .
cp /etc/easy-rsa/pki/private/russule.key server.key
cp /etc/easy-rsa/pki/issued/russule.crt server.crt

Client

FIXME il y a maintenant un script pour réaliser le client, suivre : https://mycelium-fai.org/wiki/documentation/technique/client-vpn/start

Création de la paire de clé

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

  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/easy-rsa
./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/easy-rsa/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
russule.crt Serveur seulement Certificat serveur Non
russule.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 : de jerome

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki