Salut à tous
Depuis peu, QNAP accepte de base l'utilisation des certificats Let's Encrypt. Pour ceux qui connaissent pas, en gros c'est ce qui permet d'avoir du HTTPS, et sans avoir un gros message d'erreur comme avec le certificat par défaut, lui est "officiel".
Pour le demander, je vais pas m'attarder, c'est simple, ça se passe dans Panneau de contrôle=>Système=>Sécurité=>Clé privée et certificat, bouton "Remplacer le certificat", puis "Obtenir un certificat par Let's Encrypt". On doit simplement fournir un nom à enregistrer (le nom du DDNS en général, celui de la barre d'adresse en haut genre "chezmoi.ddns.net"), son mail, et c'est parti. A noter qu'il faut bien que le port 80 soit ouvert vers le NAS.
Tout ça c'est top mais le certificat est valide 3 mois ... c'est court, et QNAP n'a pas (encore ?) introduit le renouvellement auto
Suite à un petit soucis je me suis donc mis à chercher comment le faire quand même, d’où ce petit tuto
Prérequis :
- Avoir bien configuré un certificat avec l'outil QNAP comme indiqué plus haut
- Avoir accès en SSH
L'outil QNAP pour ça se trouve dans /mnt/ext/opt/QcloudSSLCertificate/bin.
Donc il faut juste l'appeler comme il faut.
Pour ma part j'ai ce script :
Si on le lance un coup, on devrait avoir un peu d'attente puis voir deux gros pavés de texte, c'est que c'est bon
En écrivant ça dans un petit fichier, on peut ensuite automatiser.
Admettons que le code plus haut soit enregistrer dans /share/homes/admin/renew_auto_certif.sh (par exemple), et que ce fichier soit exécutable avec
Le but est d'appeler avec CRON le script comme vous l'avez fait au début avec les 2 gros pavés de textes automatiquement tout les 1er du mois à 1h.
On pourrait l'ajouter manuellement au cron sauf ... que à la première mise à jour firmware le cron est remis à plat ...
Donc dernier point, il faut lancer ce script au démarrage pour reprogrammer si nécessaire le cron :
Admettons que le code plus haut soit enregistrer dans /share/homes/admin/watchcron.sh (par exemple), et que ce fichier soit exécutable avec
Il faut appeler "/share/homes/admin/watchcron.sh" au démarrage du système, avec la technique du autorun (https://techlightup.blogspot.fr/2013/08/qnap-automatically-run-script-at-startup.html) ou avec BashIT (https://www.forum-nas.fr/viewtopic.php?f=21&t=2020&p=16572&hilit=autorun#p16572)
Depuis peu, QNAP accepte de base l'utilisation des certificats Let's Encrypt. Pour ceux qui connaissent pas, en gros c'est ce qui permet d'avoir du HTTPS, et sans avoir un gros message d'erreur comme avec le certificat par défaut, lui est "officiel".
Pour le demander, je vais pas m'attarder, c'est simple, ça se passe dans Panneau de contrôle=>Système=>Sécurité=>Clé privée et certificat, bouton "Remplacer le certificat", puis "Obtenir un certificat par Let's Encrypt". On doit simplement fournir un nom à enregistrer (le nom du DDNS en général, celui de la barre d'adresse en haut genre "chezmoi.ddns.net"), son mail, et c'est parti. A noter qu'il faut bien que le port 80 soit ouvert vers le NAS.
Tout ça c'est top mais le certificat est valide 3 mois ... c'est court, et QNAP n'a pas (encore ?) introduit le renouvellement auto
Suite à un petit soucis je me suis donc mis à chercher comment le faire quand même, d’où ce petit tuto
Prérequis :
- Avoir bien configuré un certificat avec l'outil QNAP comme indiqué plus haut
- Avoir accès en SSH
L'outil QNAP pour ça se trouve dans /mnt/ext/opt/QcloudSSLCertificate/bin.
Donc il faut juste l'appeler comme il faut.
Pour ma part j'ai ce script :
Code:
#!/bin/sh
cd /mnt/ext/opt/QcloudSSLCertificate/bin
rm ../log/*
/bin/sh generate_letsencrypt_csr.sh 1 "ADRESSE" "MAIL" "http"
if [ -f "../log/acme_error_code" ]; then
echo "Error in renew process"
exit 1
fi
cat ../cert/key ../cert/cert > ../cert/stunnel
/etc/init.d/stunnel.sh stop
cp ../cert/stunnel /etc/stunnel/stunnel.pem
cp ../cert/intermediate.pem /etc/stunnel/uca.pem
/etc/init.d/stunnel.sh start
/etc/init.d/Qthttpd.sh restart
# Optionnel, pour garder une copie complète utilisable par d'autres services tels que Caddy
cat ../cert/cert ../cert/intermediate.pem > /share/homes/admin/domain.full.cert.pem
cp ../cert/key /share/homes/admin/domain.key
Si on le lance un coup, on devrait avoir un peu d'attente puis voir deux gros pavés de texte, c'est que c'est bon
En écrivant ça dans un petit fichier, on peut ensuite automatiser.
Admettons que le code plus haut soit enregistrer dans /share/homes/admin/renew_auto_certif.sh (par exemple), et que ce fichier soit exécutable avec
Code:
chmod 750 /share/homes/admin/renew_auto_certif.sh
Le but est d'appeler avec CRON le script comme vous l'avez fait au début avec les 2 gros pavés de textes automatiquement tout les 1er du mois à 1h.
On pourrait l'ajouter manuellement au cron sauf ... que à la première mise à jour firmware le cron est remis à plat ...
Donc dernier point, il faut lancer ce script au démarrage pour reprogrammer si nécessaire le cron :
Code:
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/sbin:/usr/local/bin
#Wait for boot
sleep 300
crontab -l|grep -q "renew_auto_certif"
if [ $? -ne 0 ]
then
echo "Add renew cron entry"
echo "0 1 1 * * /share/homes/admin/renew_auto_certif.sh" >> /etc/config/crontab
crontab /etc/config/crontab && /etc/init.d/crond.sh restart
fi
Admettons que le code plus haut soit enregistrer dans /share/homes/admin/watchcron.sh (par exemple), et que ce fichier soit exécutable avec
Code:
chmod 750 /share/homes/admin/watchcron.sh
Il faut appeler "/share/homes/admin/watchcron.sh" au démarrage du système, avec la technique du autorun (https://techlightup.blogspot.fr/2013/08/qnap-automatically-run-script-at-startup.html) ou avec BashIT (https://www.forum-nas.fr/viewtopic.php?f=21&t=2020&p=16572&hilit=autorun#p16572)