[Tuto] Renouveler automatiquement son certificat Let's Encrypt

Les tutoriaux rédigés par les membres
Mikiya
Chevalier Jedi
Messages : 412
Enregistré le : 25 octobre 2016

[Tuto] Renouveler automatiquement son certificat Let's Encrypt

Message par Mikiya » 21 juin 2017 08:01

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 :D

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 : Tout sélectionner

#!/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 8-)

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 : Tout sélectionner

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 : Tout sélectionner

#!/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 : Tout sélectionner

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 ... artup.html) ou avec BashIT (viewtopic.php?f=21&t=2020&p=16572&hilit=autorun#p16572)
QNAP TS-251+ 4Go | RAID 1 Seagate IronWolf 3To | Onduleur Eaton 3S 550

Avatar du membre
FX Cachem
Site Admin
Messages : 8918
Enregistré le : 08 décembre 2013
Professionnel : Non
Localisation : Paris
Contact :

Re: [Tuto Beta] Renouveler automatiquement son certificat Let's Encrypt

Message par FX Cachem » 21 juin 2017 15:05

Merci Mikiya pour ce Tuto ! 💪
Blogueur sur Cachem et administrateur du Forum des NAS
NAS : Synology DS412+ | QNAP TS-470 Pro | ASUSTOR AS-302T

Avatar du membre
QoolBox
Représentant de QNAP
Messages : 6258
Enregistré le : 02 janvier 2014
Professionnel : Oui
Localisation : France
Contact :

Re: [Tuto Beta] Renouveler automatiquement son certificat Let's Encrypt

Message par QoolBox » 21 juin 2017 15:13

Super... thanks

Mikiya
Chevalier Jedi
Messages : 412
Enregistré le : 25 octobre 2016

Re: [Tuto] Renouveler automatiquement son certificat Let's Encrypt

Message par Mikiya » 01 juil. 2017 23:12

Voila update avec quelques commandes manquantes avec stunnel et l'ajout du cron fait automatiquement au boot si nécessaire (surtout après update).
Testé et validé pour ma part :)
QNAP TS-251+ 4Go | RAID 1 Seagate IronWolf 3To | Onduleur Eaton 3S 550

Avatar du membre
NeoVal
Padawan
Messages : 75
Enregistré le : 12 novembre 2016

Re: [Tuto] Renouveler automatiquement son certificat Let's Encrypt

Message par NeoVal » 04 juil. 2017 00:24

Dans l'application myQNAPcloud, tu peux activer le renouvellement automatique ! :mrgreen:

Image

Je l'ai testé depuis la beta de QTS en 4.3 et tout fonctionne correctement, le certificat s'est renouvelé tout seul au bout de 3 mois.

@+
NAS Perso : Qnap TS-253A - 8Go - 2 x WD Red 4To
NAS Pro : Synology RS2416RP+ - 2Go - 9 x WD Red Pro 6To

Mikiya
Chevalier Jedi
Messages : 412
Enregistré le : 25 octobre 2016

Re: [Tuto] Renouveler automatiquement son certificat Let's Encrypt

Message par Mikiya » 04 juil. 2017 09:22

Oui mais quand tu es en direct avec un DDNS configuré sur une adresse et que tu veux pas passer par le myqnapcloud de QNAP (j'aime pas trop le concept, ça simplifie mais t'as moins la main) tu peux pas, l'outil de certificat dans les paramètres n'a pas d'options sur le renouvellement :?
QNAP TS-251+ 4Go | RAID 1 Seagate IronWolf 3To | Onduleur Eaton 3S 550

Avatar du membre
NeoVal
Padawan
Messages : 75
Enregistré le : 12 novembre 2016

Re: [Tuto] Renouveler automatiquement son certificat Let's Encrypt

Message par NeoVal » 04 juil. 2017 14:11

Mikiya a écrit :
04 juil. 2017 09:22
Oui mais quand tu es en direct avec un DDNS configuré sur une adresse et que tu veux pas passer par le myqnapcloud de QNAP (j'aime pas trop le concept, ça simplifie mais t'as moins la main) tu peux pas, l'outil de certificat dans les paramètres n'a pas d'options sur le renouvellement :?
Ok je comprends mieux ! C'est vrai que je ne me suis pas pris la tête, le DDNS de myqnapcloud répondant à mon besoin...
NAS Perso : Qnap TS-253A - 8Go - 2 x WD Red 4To
NAS Pro : Synology RS2416RP+ - 2Go - 9 x WD Red Pro 6To

Tosh
Chevalier Jedi
Messages : 160
Enregistré le : 25 juin 2015
Professionnel : Non
Localisation : Lille

Re: [Tuto] Renouveler automatiquement son certificat Let's Encrypt

Message par Tosh » 03 mars 2018 22:28

Je rencontre un problème avec le script lorsque je tente d'exécuter ./renew_auto_certif.sh

J'obtiens :

-sh: ./renew_auto_certif.sh: /bin/sh^M: bad interpreter: No such file or directory

J'ai pourtant fais un copier coller de ton fichier et j'ai bien vérifier qu'il n'y à pas de caractère bizarre dedans :)
NAS : QNAP TS-470 Ultimate

Mikiya
Chevalier Jedi
Messages : 412
Enregistré le : 25 octobre 2016

Re: [Tuto] Renouveler automatiquement son certificat Let's Encrypt

Message par Mikiya » 03 mars 2018 23:50

Si t'es sur que il n'y a pas de copié foireux, essaye de faire un coup de dos2unix du fichier au cas ou.
PS : j'ai rajouté une copie du fichier clé aussi rajoutes la ligne de fin si tu veux t'en servir pour caddy.
QNAP TS-251+ 4Go | RAID 1 Seagate IronWolf 3To | Onduleur Eaton 3S 550

Avatar du membre
Celena-007
Chevalier Jedi
Messages : 323
Enregistré le : 08 janvier 2016

Re: [Tuto] Renouveler automatiquement son certificat Let's Encrypt

Message par Celena-007 » 04 mars 2018 09:00

Tosh a écrit :
03 mars 2018 22:28
-sh: ./renew_auto_certif.sh: /bin/sh^M: bad interpreter: No such file or directory
^M est un problème de copier coller de windows au format UNIX donc effectivement un dos2unix devrai résoudre le problème.

Répondre

Retourner vers « Tutoriaux »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités