[NAS] [QNAP] Problème de connexion avec certains Services WEB - Mettre à jour les Certificats ROOT Let's Encrypt
-
Prérequis :
- Savoir utiliser un client SSH (Putty, kitty…)
- Savoit utiliser un éditeur texte vim (Ou utiliser le mode Edition du client sftp WinSCP) (on va essayer de minimiser ce dernier point)
Joie, vous venez enfin d’intégrer le Tracker super privé que vous convoittiez, ou la dernière grosse board DDL …
Mais Horreur, le logiciel de Download / BitTorrent de votre Nas ne parvient pas à se connecter aux serveurs en question.
Tracker: [Peer certificate cannot be authenticated with given CA certificates] Error: Unable to establish a secure connection
Pourtant le navigateur web de mon PC se connecte sans problème en HTTPS et je peux consulter le contenu disponible.
- Alors où est le problème ?
Il y a de fortes chances que le problème concerne le certificat de sécurité SSL/TLS utilisé par les sites en question.
Et que ce certificat provienne de l’Autorité de Certification Let’s Encrypt (CA qui fournit des certificats gratuits aux sites web).Let’s Encrypt utilisait dans sa chaîne de certification un Certificat Intermédiaire qui a expiré en Septembre 2021. Rien de problématique puisque maintenant il fournit un nouveau certificat pour la validation et qu’une très grande partie des Systèmes d’Exploitation ont intégré ces nouveaux Certificats Root Let’s Encrypt dans leur bundle de certificats Root CA.
Malheureusement ce n’est pas le cas pour certains matériels anciens qui n’auront pas de mise à jour ainsi que pour certains Nas.
C’est le cas pour des Nas QNAP (O.S QTS à jour), il n’y a pas eu de mise à jour du bundle de certificats Root CA.- Comment savoir si mon Nas est concerné ?
Il faut ouvrir une session admin (root) à distance sur le Nas par SSH et exécuter la commande suivante
wget https://framadrive.org
Votre Nas est concerné si vous avez ce retour
Connecting to framadrive.org|94.130.9.91|:443... connected. ERROR: cannot verify framadrive.org's certificate, issued by ‘CN=R3,O=Let's Encrypt,C=US’: Issued certificate has expired.
- Alors que peut-on faire ?
On va ajouter au Nas les certificats Let’s Encrypt nécessaires en suivant les commandes suivantes
(on est toujours en session à dustance par SSH)# on cree un dossier de stockage mkdir ~/lets-encrypt-certs cd ~/lets-encrypt-certs # on recupere les certificats curl --ipv4 --insecure -O https://letsencrypt.org/certs/isrgrootx1.pem curl --ipv4 --insecure -O https://letsencrypt.org/certs/isrg-root-x2.pem # on modifie le nom des fichiers pour les rendre compatible ave openssl for filename in *pem; do cp $filename `openssl x509 -hash -noout -in $filename`.0; done; # on ajoute les fichiers de certificat au bundle de Certificats Root CA du systeme cp *.0 /etc/ssl/certs/ cd
Et maintenant on valide la modification
wget https://framadrive.org
Résultat, Code 200, tout va bien
Reusing existing connection to framadrive.org:443. HTTP request sent, awaiting response... 200 OK Length: 25337 (25K) [text/html] Saving to: ‘index.html’
Dorénavant tous les softwares affectés par ce problèmes vont fonctionner correctement. Software comme wget, curl, transmission, …
J’ai utilisé le site framadrive.org comme exemple pour respecter les urls illégales, je peux indiquer que ce problème concerne également au moins 2 trackers
- sharewood.*** (site généraliste français)
- re*******.*** (site de musique suisse)
Remarques importantes :
1 - Ni le forum ni moi-même ne sont responsables de vos actions sur votre Nas, si vous ne comprennez pas ce aque vous êtes en train de faire alors ne le faite pas !2 - Vu le fonctionnement du système QTS, cette modififcation sera écrasée après redémarrage du Nas
Je remercie fortement la personne qui m’a permis de tester ce HOW-TO sur son Nas QNAP
Nota : Je ferais un update quand je pourrais tester une solution pour rendre la modification permanente après redémarrage du Nas.
-
Merci pour ton tuto! C’est sympa de partager.
-
Partie II - Rendre les modifications permanentes
Vous avez aimé (ou pas) l’éposode 1 alors vous allez adorer (détester) l’épisode 2
Comme je l’ai indiqué plus tôt, le système QTS procède à un Reset d’un certain nombre de fichiers/dossier lors du re-démarrage d’un Nas QNAP.
Ce comportment a pour effet de supprimer les personnalisations apportés par l’utilisateur. J’attire l’attention sur le fait que même le dossier de l’utiliseur admin (root) est ré-initialisé.Donc la 1ère chose à faire est de trouver un endroit de stockage pérenne pour les informations nécessaires à notre modification. Il apparaît que le système QTS utilise un dossier particuliers (/share) pour installer les volumes de stockage (disques durs du Nas) et que dans cette arborescence, il existe un dossier particuliers qui sert à stocker les applications du système (exécutable, fichiers de configuration, images…). Ce dossier (.qpkg) n’est pas concerné par la phase de Reset au démarrage et nous allons donc nous en servir pour stocker nos informations.
Pour déterminer le chemin en question, nous allons utiliser la commande
find /share -type d -name '.qpkg'
Pour le Nas concerné, le résultat est
/share/CACHEDEV1_DATA/.qpkg
Ce chemin va servir de dossier de base pour enregistrer nos données.
Donc on recommence le processus pour les certificats Let’s Encrypt
# on cree un dossier de stockage mkdir -p /share/CACHEDEV1_DATA/.qpkg/myroot/lets-encrypt-certs cd /share/CACHEDEV1_DATA/.qpkg/myroot/lets-encrypt-certs # on recupere les certificats curl --ipv4 --insecure -O https://letsencrypt.org/certs/isrgrootx1.pem curl --ipv4 --insecure -O https://letsencrypt.org/certs/isrg-root-x2.pem # on modifie le nom des fichiers pour les rendre compatible ave openssl for filename in *pem; do cp $filename `openssl x509 -hash -noout -in $filename`.0; done; # on ajoute les fichiers de certificat au bundle de Certificats Root CA du systeme cp *.0 /etc/ssl/certs/ cd ..
Nous voici revenu à la situation précédente avec des certificats Let’s Encrypt à jour.
Nous allons maintenant nous occuper de rendre les modifications permanentes.Nous allons utiliser une possibilité offerte par le système QTS : lancer un script utilisateur au démarrage du Nas.
Bon comme on est sur un Nas et que rien n’est simple, il faut utiliser une méthode particulière pour accéder à ce script.
En effet il est directment stocké dans la mémoire flash du Nas, et son accès nécessite de ‘monter la partition’ en question dans le système de fichier.Nota : Voici la source qui permet de déterminer comment monter la partition en question selon le modèle du Nas
https://wiki.qnap.com/wiki/Running_Your_Own_Application_at_StartupPour le Nas en question, cela donne (Il est important de bien suivre toutes les instructions)
# Montage de la partition Flash dans le dossier /tmp/config mount $(/sbin/hal_app --get_boot_pd port_id=0)6 /tmp/config # deplacement ans le dossier de montage cd /tmp/config # creation du script autorun.sh (on evitant d'utiliser vi) echo '#!/bin/sh' > autorun.sh echo '/share/CACHEDEV1_DATA/.qpkg/myroot/my_autorun.sh &' >> autorun.sh # on rend le script executable chmod u+x autorun.sh # deplacement dans le dossier d'origine - indispensable sinon on ne peut pas demonter le point de montage /tmp/config cd /share/CACHEDEV1_DATA/.qpkg/myroot # IMPORTANT, demontage du point de montage /tmp/config umount /tmp/config
Voila le script autorun.sh est en place
Mais vous noterez qu’il ne fait pas grand chose, en fait, il ne fait que lancer un autre script qui est placé dans notre dossier de travail. De cette manière, on peut apporter des modifications à notre script de démarrage sans devoir repasser par l’étape (pénible) du montage de la partition Flash.
Donc maintenant nous allons créer le nouveau script qui effectue réellement les modifications nécessaires pour les certificats let’s Encrypt.
Script : /share/CACHEDEV1_DATA/.qpkg/myroot/my_autorun.sh
# creation du script my_autorun.sh (toujours en evitant vi) echo '#!/bin/sh' > /share/CACHEDEV1_DATA/.qpkg/myroot/my_autorun.sh echo 'LOGFILE=/root/my_autorun_`date +"%Y%m%d_%k_%M_%S"`.txt' >> /share/CACHEDEV1_DATA/.qpkg/myroot/my_autorun.sh echo 'echo "START : $0" >> "$LOGFILE"' >> /share/CACHEDEV1_DATA/.qpkg/myroot/my_autorun.sh echo 'if [ -d /share/CACHEDEV1_DATA/.qpkg/myroot/lets-encrypt-certs ]; then' >> /share/CACHEDEV1_DATA/.qpkg/myroot/my_autorun.sh echo ' echo "COPY LETS ENCRYPT CERTS" >> "$LOGFILE"' >> /share/CACHEDEV1_DATA/.qpkg/myroot/my_autorun.sh echo ' cd /share/CACHEDEV1_DATA/.qpkg/myroot/lets-encrypt-certs' >> /share/CACHEDEV1_DATA/.qpkg/myroot/my_autorun.sh echo ' cp -f *.0 /etc/ssl/certs/' >> /share/CACHEDEV1_DATA/.qpkg/myroot/my_autorun.sh echo 'fi' >> /share/CACHEDEV1_DATA/.qpkg/myroot/my_autorun.sh echo 'exit 0' >> /share/CACHEDEV1_DATA/.qpkg/myroot/my_autorun.sh # on rend le script executable chmod u+x /share/CACHEDEV1_DATA/.qpkg/myroot/my_autorun.sh
On a terminé avec SSH et on peut ENFIN fermer la session à distance sur le Nas.
Maintenant le point final : on active la fonction Autorun de QTS dans l’interface Web
1 - On se connecte avec l’utilisateur admin sur l’interface Web du nas
2 - On lance le Panneau de configuration > Matériel > Cocher ‘Exécuter les processus définis par l’utilisateur lors du démarrage’
3 - On peut vérifier le contenu du script autorun.sh avec le lien (Voir autorun.sh)
4 - On valide en cliquant Appliquer
4 - On ferme le Panneau de configurationIl ne reste plus qu’à stopper toutes les tâches en cours et à redémarrer le Nas pour vérifier le bon fonctionnement de l’Autorun.
Merci pour votre attention et prenez soin de vous et de vos proches
REMARQUE IMPORTANTE :
1 - Ni le forum ni moi-même ne sont responsables de vos actions sur votre Nas, si vous ne comprennez pas ce aque vous êtes en train de faire alors ne le faite pas !
Je remercie à nouveau la personne qui m’a permis de tester ce HOW-TO sur son Nas QNAP
Guest Star : Fab et son Nas QNAP