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
tapez la commande
openssl x509 -in /etc/openvpn/keys/user.crt -enddate -noout
qui donne …
notAfter=Nov 27 13:49:23 2020 GMT
La date affichée après le noAfter
est la date d'expiration.
Il y a quatre méthodes possibles pour renouveler le certificat.
L'application Neutrinet s'occupe de vérifier chaque nuit si les certificats doivent être renouvelés.
Vous pouvez soit installer l'application via la console d'admin, soit avec:
yunohost app install neutrinet
Pour mettre à jour cette application:
yunohost tools update apps yunohost app upgrade neutrinet
Si l'application Neutrinet est déjà installée, vous pouvez forcer la vérification des certificats:
/opt/neutrinet/renew_cert/renew_cert.sh
Clônez le dépôt git suivant, sur votre brique internet ou sur votre ordinateur, dans un dossier qui contient les fichiers du VPN à savoir (auth, client.crt, client.key, ca.crt ou credentials, user,crt, user.key et ca-server.crt) :
git clone https://git.domainepublic.net/Neutrinet/renew_cert
Déplacez-vous dans le dossier qui vient d'être créé:
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:
python3 -m venv ve
Activez ensuite cet environnement:
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-dossier 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
, client.key
et ca.crt
, c'est-à-dire la clé publique et la clé privée du certificat client, ainsi que la clé publique du certificat serveur.
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
):
sudo mv /etc/openvpn/keys/user.crt{,.backup} sudo mv /etc/openvpn/keys/user.key{,.backup} sudo mv /etc/openvpn/keys/ca-server.crt{,.backup} sudo mv client.crt /etc/openvpn/keys/user.crt sudo mv client.key /etc/openvpn/keys/user.key sudo mv ca.crt /etc/openvpn/keys/ca-server.crt
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).
sudo systemctl restart ynh-vpnclient
Vous pouvez vérifier que tout est correct dans les logs du client VPN:
tail /var/log/openvpn-client.log /var/log/ynh-vpnclient.log
Cette méthode demande parfois de la patience car user.neutrinet.be peut connaître des ratés.
Connectez-vous en ssh à votre brique internet, puis allez dans le dossier où se trouve la clé du VPN (il s'agit normalement du fichier /etc/openvpn/keys/user.key
):
cd /etc/openvpn/keys
Créez une demande de signature de clés (CSR) pour cette clé:
openssl req -out client.csr -new -newkey rsa:4096 -nodes -keyout user.key
Plusieurs questions vous 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 qui sera utilisé par Neutrinet pour savoir à qui appartient le certificat.
Remarque: Il est recommandé de mettre votre adresse e-mail pour le Cname.
Cette commande crée un fichier client.csr
, qui contient la demande de signature. Vous pouvez afficher son contenu avec:
cat client.csr
Copiez ce contenu, et rendez-vous sur https://user.neutrinet.be
Connectez-vous
Cliquez sur Users
Attendez que cela charge, et quand vous voyez votre nom, cliquez dessus
Cliquez sur View associated clients
Cliquez sur votre certificat (si vous en avez plusieurs, il faut utiliser celui avec une IPv4 - 80.67.181.x)
Choisissez l'option Renew certificate
Le certificat actuel s'affiche alors à l'écran. Cliquez sur Rekey
, puis collez le contenu du CSR (le fichier que vous aviez copié plus tôt).
Cliquez sur le bouton Rekey
pour confirmer.
Une fois cette opération terminée, vous verrez le bandeau suivant:
Vous pouvez alors cliquer sur View client details
, puis sur Download config package
.
Cela va télécharger un fichier zip qui contient les fichiers de certificat. Dans le dossier /etc/openvpn/keys
de votre brique internet, copiez le fichier client.crt
vers /etc/openvpn/keys/user.crt
.
Voilà, c'est tout!