Outils pour utilisateurs

Outils du site


fr:vpn:renew-cert

**Ceci est une ancienne révision du document !**

Renouvellement des certificats VPN

FIXME refaire les images

Si vous avez des problèmes pour vous connecter au VPN et que vous voyez l'erreur:

Certificate has key usage  00a0, expects 00a0

dans le fichier /var/log/openvpn-client.log, c'est que votre certificat a probablement expiré.

Pour vérifier sa date d'expiration, en tant que root:

snippet.sh
$ openssl x509 -in /etc/openvpn/keys/user.crt -notext -enddate
notAfter=Nov 12 13:42:43 2018 GMT

La date affichée après le noAfter est la date d'expiration.
Il y a trois procédures possibles pour renouveler le certificat.

App Neutrinet

L'application Neutrinet s'occupe de vérifier chaque nuit si les certificats doivent être renouvelés.

Installation

Vérifiez que vous avez la liste des applications de Neutrinet:

snippet.sh
yunohost app listlists

Si la liste neutrinet n'apparaît pas, installez-la via:

snippet.sh
yunohost app fetchlist -n neutrinet -u https://neutrinet.be/apps.json

À partir de là, vous pouvez soit installer l'application via la console d'admin, soit avec:

snippet.sh
yunohost app install neutrinet

Mise à jour

Pour mettre à jour cette application:

snippet.sh
yunohost tools update --apps
yunohost tools upgrade --apps neutrinet

À partir d'une brique

Si l'application Neutrinet est déjà installée, vous pouvez forcer la vérification des certificats:

snippet.sh
cd /opt/neutrinet/renew_cert
./renew_cert_cron.sh -v

Via le script renew_cert

Clônez le dépôt git suivant, sur votre brique internet ou sur votre ordinateur:

snippet.sh
git clone https://git.domainepublic.net/Neutrinet/renew_cert

Déplacez-vous dans le dossier qui vient d'être créé:

snippet.sh
cd renew_cert

Créez un environnement virtuel python3. Cela signifie que les paquets python3 qui seront installés n'affecteront pas le reste du système:

snippet.sh
python3 -m venv ve

Activez ensuite cet environnement:

snippet.sh
source ve/bin/activate

Installez les dépendances du script:

pip install -r requirements.txt

Enfin, lancez le script via cette commande:

python renew.py <nom d'utilisateur du VPN Neutrinet>

Il vous sera demandé votre mot de passe pour se connecter au VPN de Neutrinet.

Si tout se passe bien, un sous-dosser nommé certs_YYYY-MM-DD_HH:MM:SS (remplacer les lettres en majuscules par la date et l'heure d'exécution du script) est créé, lequel reprend tous les fichiers de configuration nécessaires au client OpenVPN.

Les fichiers qui nous intéressent sont client.crt et client.key, c'est-à-dire la clé publique et la clé privée du certificat.

Ces fichiers doivent remplacer ceux situés dans /etc/openvpn (cela peut changer en fonction de l'OS). Sur la brique internet, ces fichiers se trouvent dans /etc/openvpn/keys

Remarque: Avant de remplacer l'un par l'autre, il est conseillé de faire une copie des anciens certificats, juste au cas où. Par exemple, via les commandes suivantes (toujours depuis le dossier renew_cert):

snippet.sh
sudo mv /etc/openvpn/keys/user.crt{,.backup}
sudo mv /etc/openvpn/keys/user.key{,.backup}
sudo mv client.crt /etc/openvpn/keys/user.crt
sudo mv client.key /etc/openvpn/keys/user.key

Il ne reste plus qu'à redémarrer le service OpenVPN pour voir s'il fonctionne toujours.

Remarque: Idéalement, assurez-vous d'être connecté à la brique internet en réseau local, c'est-à-dire via son adresse locale (192.168.1.x dans la plupart des cas).

snippet.sh
sudo systemctl restart openvpn`

Pour vérifier que vous êtes connecté derrière le VPN, vous pouvez lancer la commande:

snippet.sh
ip addr

Normalement, l'interface tun0 devra apparaître dans la liste.

Via le site user.neutrinet.be

Deuxième méthode (qui parfois demande la patience car actuellement user.neutrinet.be connait des ratés):

La seconde méthode consiste à se connecter en ssh au cubieboard, aller dans le dossier où se trouve la clef du VPN (a priori, il s'agit du fichier /etc/openvpn/neutrinet/client.key ou /etc/openvpn/client.key )

cd /etc/openvpn/neutrinet

Puis de créer une demande de signature de clefs (CSR) pour cette clef

openssl req -new -sha1 -out client.csr -key user.key

Plusieurs questions te seront posées, comme le code pays (BE), la région (Bruxelles, …), la Société etc… auquel le certificat est attaché. Le plus important est le “Cname”, qui est le nom sous lequel tu vas apparaitre pour neutrinet.

Cette commande créé un fichier client.csr, qui contient la demande de signature. Tu peux en voir le contenu en faisant

cat client.csr

Copie ce contenu précieusement, et rends-toi sur https://user.neutrinet.be

Connecte-toi

image

Clique sur users

Attends que cela charge, et quand tu vois ton nom, clique dessus, puis sur “View associated clients”

image

Ensuite clique sur ton certificat (si tu en as plusieurs, il faut utiliser celui qui liste une IPv4 - 80.67.181.x), et choisi l'option “Renew certificate”

image

Il va alors te présenter ton certificat actuel. si tu cliquer sur Rekey, tu auras la possibilité de coller le CSR (le fichier généré plus tôt, que tu as copié), puis de cliquer sur Rekey.

Une fois cette opération terminée, tu verras un bandeau comme ceci:

image

Tu pourras alors cliquer sur “View client details”, puis sur Download config package, qui est un zip qui contient le fichier de certificat qu'il faudra remplacer dans, à priori, /etc/openvpn/neutrinet (voir plus haut, en fonction du dossier qui tu as décidé d'utiliser à la configuration du service).

Voilà, c'est tout!

Liens

fr/vpn/renew-cert.1576401829.txt.gz · Dernière modification : 2019/12/15 10:23 de hgo