Aller au contenu

Renouvellement automatique Certificat "wilcard" LetsEncrypt


Messages recommandés

Bonjour,

Pour tous ceux d'entre vous qui sont intervenus dans mon post "[TUTO]Création d'un certificat "wilcard" Let'sEncrypt avec la méthode "acme.sh" " :

@alan.dub @Jeff777 @.Shad. @CyberFr @GrOoT64 @PPJP @_Megalegomane_ @TuringFan @zerda @oudin @vincentbls @Einsteinium @kerod @Jz84 @jo.p @Pinpon_112

et pour tous les autres membres qui liront ce post, j'ai le plaisir de vous informer que la procédure de renouvellement du certificat "wilcard" Let'sEncrypt est maintenant totalement opérationnelle et efficiente.

Grâce aux talents de développement de @bruno78 qui a fourni un remarquable travail et que je remercie encore vivement ici, cette procédure est entièrement automatisée.

Oubliés les ports à ouvrir pour le renouvellement ainsi que les problèmes de certificat non réaffecté aux services, plus besoin de getter la date du renouvellement, TOUS les services et packages (avec leurs dépendances) sont maintenant bien relancés après un renouvellement.

Je vous invite donc à consulter le TUTO pour prendre connaissance des modifications apportées à la procédure.

Bonne lecture ...

Cordialement

oracle7😏

Modifié par oracle7
Lien vers le commentaire
Partager sur d’autres sites

Bonjour @oracle7 et @bruno78,

Je suis débutant et clairement incapable de produire ce que vous avez fait mais ça ne m’empêche pas de me rendre compte du travail monstre réalisé ! Bravo !

J'avais en tête qu'avant l'arrivée du code le renouvellement automatique était généré via le planificateur de tache sous réserve de laisser lees ports 80 et 443 en permanence ouverts.

Si je comprends bien ce code va donc permettre ce renouvellement automatique sans avoir à laisser ses ports 80 et 443 ouverts (ce qui est top d'un point de vue sécurité) et sans à avoir à réaffecter tous les 3 mois les services à couvrir avec le certificat : sur le papier on va donc pouvoir "oublier le sujet certificat à vie" pour tous ces "sous" domaines, c'est bien cela ?

Merci encore,

Je vais passer à l'implémentation dès que j'ai un peu de  temps.
 

Lien vers le commentaire
Partager sur d’autres sites

@TuringFan

Bonjour,

il y a 9 minutes, TuringFan a dit :

J'avais en tête qu'avant l'arrivée du code le renouvellement automatique était généré via le planificateur de tache sous réserve de laisser lees ports 80 et 443 en permanence ouverts.

Je crains que tu ne mélanges les notions. Rien de grave, je t'explique :

  • Il faut laisser les ports 80 et 443 ouverts en permanence le temps d'un renouvellement d'un certificat LE créé à partir de l'interface DSM de ton NAS pour n'importe quel domaine "ndd.tld". Ceci est aussi valable pour les certificats sur les domaines "xxxxx.synology.me" parce que ces méthodes (implémentées par Synology dans les NAS) utilisent le protocole "HTTP-01" qui nécessite l'ouverture de ces ports pour les opérations de validation du certificat.
  • Maintenant, le port 443 doit aussi être ouvert en permanence si tu utilises un reverse proxy sur ton NAS. Mais c'est une autre raison de son ouverture.
  • Avec la méthode 'acme.sh" couplée aux API d'OVH on utilise la méthode de validation dite par DNS basée sur le protocole « DNS-01 ». Ce protocole présente l’avantage de ne pas avoir besoin d’ouvrir de ports lors de la création du certificat LE mais surtout lors de son renouvellement et là c’est le « plus » indéniable du point de vue sécurité qu’apporte cette méthode. J'explique cela dans le TUTO.

Voilà le pourquoi du comment ...

Cordialement

oracle7😏

Lien vers le commentaire
Partager sur d’autres sites

@oracle7

J'ai préféré faire la ligne de commande réelle donc automatisée...

Sauf erreur de ma part, ce n'est pas le manuelle qui est utilisée via le mode programmé.

Donc diagonale, non je reste cohérent avec ce que je veux faire avec le script.

EDIT

Je suis repassé en mode "manuel" et donc en ligne de commande pour tester (peut-être qu'il faudrait le préciser dans le tutoriel autrement que via le -h).

Je n'ai aucune erreur et ce malgré ma configuration spécifique comme indiquée dans le tutoriel.

Modifié par kerod
Lien vers le commentaire
Partager sur d’autres sites

@kerod

il y a 26 minutes, kerod a dit :

peut-être qu'il faudrait le préciser dans le tutoriel autrement que via le -h

Non, la description des options du script faite via le -h est à mon sens suffisante, il n'y a pas besoin d'en dire plus notamment pour des "initiés" auxquels ce mode manuel est plus particulièrement destiné. Les utilisateurs "lambda" eux, n'en n'ont pas l'utilité à partir du moments où ils suivent méthodiquement le TUTO avec l'utilisation standard du script Python.

Cordialement

Lien vers le commentaire
Partager sur d’autres sites

@kerod

il y a 2 minutes, kerod a dit :

Ca ne mange pas de pain et ça permet même aux personnes autres que des initiés de se rendre compte du fonctionnement sans avoir à attendre le cron du lundi.

Je ne suis pas convaincu car l'idée est aussi de ne pas "effrayé" les utilisateurs "lambda" avec les manipulations sous SSH avec tous les autres risques pour leur installation que cela recouvre en cas de fausse manip de leur part. Il n'y a qu'à observer certains posts ici pour s'en rendre compte. Il faut donc penser aussi à eux ...

Cordialement

oracle7😏

Lien vers le commentaire
Partager sur d’autres sites

@oracle7

Pour avoir fait de nombreux tutoriels dans ma "jeunesse" (et pourtant je le suis toujours), je ne trouve pas que c'est effrayé des personnes lambda. 

Par contre, quand on commence à parler de modification de compte root pour ne pas utiliser un sudo -i, là ça peut faire peur surtout connaissant les conséquences (comme tu le dis si bien).

Personnellement, je passe pas le sudo -i et pas de souci sans avoir à créer une clé SSH RSA.

Tout ça pour dire qu'une commande de test avec un -t en plus dans la ligne de commande que tu donnes déjà ne peut-être qu'un plus et qu'une suggestion pour une personne souhaitant tester le fonctionnement du python sans avoir un résultat disant que le certificat ne peut pas être renouveler car trop récent.

Mais ce n'est que mon avis et pas mon tutoriel.

Lien vers le commentaire
Partager sur d’autres sites

Il y a 19 heures, oracle7 a dit :

@TuringFan

Bonjour,

Je crains que tu ne mélanges les notions. Rien de grave, je t'explique :

  • Il faut laisser les ports 80 et 443 ouverts en permanence le temps d'un renouvellement d'un certificat LE créé à partir de l'interface DSM de ton NAS pour n'importe quel domaine "ndd.tld". Ceci est aussi valable pour les certificats sur les domaines "xxxxx.synology.me" parce que ces méthodes (implémentées par Synology dans les NAS) utilisent le protocole "HTTP-01" qui nécessite l'ouverture de ces ports pour les opérations de validation du certificat.
  • Maintenant, le port 443 doit aussi être ouvert en permanence si tu utilises un reverse proxy sur ton NAS. Mais c'est une autre raison de son ouverture.
  • Avec la méthode 'acme.sh" couplée aux API d'OVH on utilise la méthode de validation dite par DNS basée sur le protocole « DNS-01 ». Ce protocole présente l’avantage de ne pas avoir besoin d’ouvrir de ports lors de la création du certificat LE mais surtout lors de son renouvellement et là c’est le « plus » indéniable du point de vue sécurité qu’apporte cette méthode. J'explique cela dans le TUTO.

Voilà le pourquoi du comment ...

Cordialement

oracle7😏

@oracle7,

Merci pour la pédagogie.

J'utilise effectivement un reverse proxy, mon port 443 restera donc toujours ouvert.

Par contre si je comprends bien, même sans implémenter le code python, je peux fermer le port 80 (puisque en DNS-01) voire fermer également le port 443 aussi si il n'est pas utilisé (peu probable néanmoins), en revanche sans le code en python je devrais tous les 3 mois réaffecter le certificat aux différents services pertinents. Est-ce bien cela ?

Qu'en est il des certificats dupliqués sur d'autres machines (un routeur par exemple) : a priori je comprends que le renouvellement est exogène au certificat et que celui reste inchangé post renouvellement et que donc il n'y aura aucune manipulation à faire sur le routeur ?

Petite question technique : pour implémenter le code peut on passer directement à la partie 6. (renouvellement) ou faut il recommencer le tuto depuis le début ?

Merci encore pour ce gros travail qui en plus de pla production et du temps que cela demande permet à des néophytes comme moi (grâce à une bonne pédagogie) de faire des choses qui étaient clairement hors de portée.

 

Modifié par TuringFan
Lien vers le commentaire
Partager sur d’autres sites

@TuringFan

Bonjour,

il y a 5 minutes, TuringFan a dit :

je peux fermer le port 80 (puisque en DNS-01) voire fermer également le port 443 aussi si il n'est pas utilisé (peu probable néanmoins)

Oui pour le port 80 sauf si tu utilises un application qui en a besoin du style site Web. Pour le port 443 ne perds pas ton temps à l'ouvrir ou à le fermer, laisses le ouvert tout simplement. Quel que part quand tout marche bien, je crois que moins on intervient sur le NAS mieux il s'en portera ...

il y a 8 minutes, TuringFan a dit :

en revanche sans le code en python je devrais tous les 3 mois réaffecter le certificat aux différents services pertinents. Est-ce bien cela ?

OUI, mais ce serait dommage de se priver de cette possibilité ... On en revient encore à mon argument précédent ...

il y a 9 minutes, TuringFan a dit :

donc il n'y aura aucune manipulation à faire sur le routeur ?

Bah en fait si, après chaque renouvellement, tu récupères les fichiers générés du certificat dans /volume1/Certs/ndd.tld - ndd.tld.key, ndd.tld.cer et l'intermédiaire ca.cer (pas les fichiers ".pem" issus d'un export depuis DSM !) et sans oublier de supprimer l'éventuel "saut de ligne" présent en début du fichier "ca.cer" avec un éditeur de texte et tu les importes dans le RT. C'est la seule contrainte, si on pouvait l'automatiser ce serait "the cherry on the cake"  !😜

il y a 15 minutes, TuringFan a dit :

Petite question technique : pour implémenter le code peut on passer directement à la partie 6. (renouvellement) ou faut il recommencer le tuto depuis le début ?

Il suffit simplement d'importer le fichier Python au bon endroit et de modifier la tâche périodique dans DSM comme indiqué dans le TUTO au §6, ensuite d'attendre le renouvellement. Si vraiment tu le souhaites, dans une session SSH tu peux  effectuer un test avec l'option "-t" (voir tuto) mais il te dira sûrement que la date de renouvellement n'est pas atteinte. Donc rien à recommencer du début, c'est cool non ?

Cordialement

oracle7😏

 

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

@oracle7 merci !

Ça semble tourner, j'ai lancé le scrit (en non test) et j'obtiens : "la date de renouvellement du certificat ( Mon Aug 24 20:42:28 UTC 2020 ) n'est pas atteinte" ce qui semble cohérent.

J'ai désactivé l'ancienne tache planifiée (V1 du tuto) et créé la nouvelle qui fait tourner le script Python.

Merci encore,

Modifié par TuringFan
Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

@alan.dub @Jeff777 @.Shad. @CyberFr @GrOoT64 @PPJP @_Megalegomane_ @TuringFan @zerda @oudin @vincentbls @Einsteinium @kerod @Jz84 @jo.p @Pinpon_112 @Audio @bruno78

Pour vous informer qu'une évolution a été apportée au TUTO.

  • § 10 : Ajout d’une trace complète et systématique du processus de renouvellement.
  • § 10 : Ajout de l’option « -f » au script Python de renouvellement.
  • Nouvelle version v1.40 du script Python (à remplacer simplement dans le répertoire « /volume1/Scripts »).

Cordialement

oracle7😉

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

Bonjour,

@alan.dub @Jeff777 @.Shad. @CyberFr @GrOoT64 @PPJP @_Megalegomane_ @TuringFan @zerda @oudin @vincentbls @Einsteinium @kerod @Jz84 @jo.p @Pinpon_112 @Audio @bruno78 @Franck Binouse

Pour vous informer qu'une évolution a été apportée au TUTO.

  • § 6 : Évolution du script Python pour être aussi compatible de la dernière et actuelle version du langage Python : version 3.x.x
  • § 10 : Mise à jour du texte d’aide associé à l’option « -h ».
  • Suppression des fichiers de trace « cleanlog » et « cleanlogerr » qui n’apportaient rien de plus à la trace existante.
  • Remaniement du fichier de trace pour que soit généré un nouveau fichier à chaque exécution du script. On dispose ainsi d’un historique « tournant » basé sur 9 fichiers : « acme_renew_python.log.1 » à « acme_renew_python.log.9 ». Le fichier à l’indice « 1 » étant toujours le dernier donc le plus récent.
  • Nouvelle version v1.44 du script Python (à remplacer simplement dans le répertoire « /volume1/Scripts »).

Cordialement

oracle7😉

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.