Aller au contenu

[TUTO]Création d'un Certificat "wilcard" Let'sEncrypt avec la méthode "acme.sh"


oracle7

Messages recommandés

@bruno78

Waouh ! Il faut vraiment que @PPJP passe par ici, lui seul, à mon avis, saura répondre à ta question sur les dépendances.

Mais, je me demande si lui ne fait pas déjà toute cette manipulation dans son script quand il liste tous les packages actifs et services puis qu'il redémarre les packages actifs ?

Cordialement

oracle7😉

 

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir @oracle7,

en fait je viens de vérifier, et on trouve l'information grâce à # synopkg list --depend-on <package>

Par exemple :

root@ds918xxxx:# synopkg list --depend-on WebStation
Apache2.4-2.4.43-0015: Apache HTTP Server est un serveur HTTP open source pour les systèmes d'exploitation modernes, notamment Unix et Windows. Avec ce pack est installé, vous pouvez choisir Apache comme serveur principal dans Web Station.
phpMyAdmin-4.9.2-0183: phpMyAdmin est un outil logiciel gratuit conçu pour gérer les bases de données MariaDB. Gérez les bases de données MariaDB stockées sur votre Synology NAS en installant ce programme.
Apache2.2-2.2.34-0020: Apache HTTP Server est un serveur HTTP open source pour les systèmes d'exploitation modernes, notamment Unix et Windows. Avec ce pack est installé, vous pouvez choisir Apache comme serveur principal dans Web Station.
root@ds918xxxx:#

Ce qui correspond bien à ce que j'ai constaté ! à savoir que Apache 2.2, 2.4 et PhpMyAdmin dépendent bien de Webstation. A partir de là, le traitement doit être possible, .... mais encore du travail à faire alors que je me croyais prêt du but ....

J'avoue que je ne sais pas si cela est traité dans le script de @PPJP, que je n'ai pas encore fait tourner .....

Lien vers le commentaire
Partager sur d’autres sites

@bruno78

Bonsoir,

il y a 24 minutes, bruno78 a dit :

J'avoue que je ne sais pas si cela est traité dans le script de @PPJP, que je n'ai pas encore fait tourner .....

Sans le faire spécialement tourner, regardes le code, tu verras qu'il y a 2 fonctions dédiées : lister_packages_actifs_et_services() et redemarrage_des_packages_actifs(). Elles doivent peu-être déjà faire ce que à quoi tu réfléchis. Non ?

Cordialement

oracle7😉

Lien vers le commentaire
Partager sur d’autres sites

@oracle7

de ce que je comprends du script de @PPJP, il vérifie bien que le package est lancé, mais je ne crois pas qu'il regarde les dépendances. Ceci dit ce que fait exactement le script start-stop-status pour chaque package n'est pas clair pour moi ....

Lien vers le commentaire
Partager sur d’autres sites

@bruno78

De ce que j'en comprends (sous toutes réserves !) :

  • il mémorise les packages à "true" et récupère le "subscriber" selon le retour du script "star-stop-status" qui doit correspondre à "start". C'est peut-être là que sont gérées les dépendances ? mais pas sûr du tout ????
  • Ensuite il relance les packages ainsi mémorisés.

Pas facile tout çà 😪

Cordialement

oracle7😉

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

Hello,

a priori grâce à la commande synopkg list --depend-on <package> , j'ai a priori pris en compte le problème des packages dépendants. Ils sont maintenant identifiés et relancés à la suite des autres packages. Encore quelques vérifications et un test grandeur nature à faire, et je pense ne pas être loin du but. 🙂

Ci-dessous la trace de la partie finale du script, concernant le redémarrage des packages, liste établie dynamiquement à partir des informations du fichier INFO du certificat LE, et avec prise en compte des packages dépendants de ceux directement impactés dans le certificat.


--- Redemarrage global des Packages et services, incl. dependants ---
package AudioStation restart successfully
    ---- cmd #00 : /usr/syno/bin/synopkg restart AudioStation                   Duree 42.90 sec.
package VPNCenter restart successfully
    ---- cmd #01 : /usr/syno/bin/synopkg restart VPNCenter                      Duree 24.49 sec.
package SynologyDrive restart successfully
    ---- cmd #03 : /usr/syno/bin/synopkg restart SynologyDrive                  Duree 58.71 sec.
package LogCenter restart successfully
    ---- cmd #04 : /usr/syno/bin/synopkg restart LogCenter                      Duree 8.46 sec.
package ReplicationService restart successfully
    ---- cmd #05 : /usr/syno/bin/synopkg restart ReplicationService             Duree 59.68 sec.
package MailPlus-Server restart successfully
    ---- cmd #06 : /usr/syno/bin/synopkg restart MailPlus-Server                Duree 132.55 sec.
package FileStation restart successfully
    ---- cmd #07 : /usr/syno/bin/synopkg restart FileStation                    Duree 40.26 sec.
package WebStation restart successfully
    ---- cmd #08 : /usr/syno/bin/synopkg restart WebStation                     Duree 55.49 sec.
ftpd start/running, process 2924
    ---- cmd #09 : initctl restart ftpd                                         Duree 0.33 sec.
package SynologyMoments restart successfully
    ---- cmd #10 : /usr/syno/bin/synopkg restart SynologyMoments                Duree 41.42 sec.
package Virtualization restart successfully
    ---- cmd #11 : /usr/syno/bin/synopkg restart Virtualization                 Duree 39.49 sec.
package MailClient restart successfully
    ---- cmd #12 : /usr/syno/bin/synopkg restart MailClient                     Duree 56.96 sec.
package Apache2.4 restart successfully
    ---- cmd #13 : /usr/syno/bin/synopkg restart Apache2.4                      Duree 8.74 sec.
package phpMyAdmin restart successfully
    ---- cmd #14 : /usr/syno/bin/synopkg restart phpMyAdmin                     Duree 24.65 sec.
package Apache2.2 restart successfully
    ---- cmd #15 : /usr/syno/bin/synopkg restart Apache2.2                      Duree 8.40 sec.

--- Duree totale du script                                                            605.67 sec.

C'était un essai à blanc, donc sans appel à acme.sh. Les contrôles effectués ensuite ne montrent pas d'anomalie pour le moment. Tous les services semblent opérationnels. Me reste à valider de bout en bout avec la génération du nouveau certificat ....

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

@oracle7,

ben en fait j'avais penser à te demander de le tester également 🙂 .... avec toutes les précautions d'usage. C'est plus sage avant de le lâcher ...

Laisse moi 1 ou 2 jours pour faire un test complet, avec génération de certificat etc ..... Et il faut aussi que je fasse un peu de mise au propre du code, commentaires, .... bref  ... parce que là, à coup de rustine à droite et à gauche ... ! Après on est d'accord : un pro dira, à raison, que c'est codé avec les pieds .... Je ne suis pas pro du codage, et je ne connaissais pas python il y a 6 mois .... Mais fonctionnellement je pense que ça tient à peu prêt.

Dés que c'est prêt, je t'envoie une copie en MP.

Bruno78

Lien vers le commentaire
Partager sur d’autres sites

@bruno78

OK pas de problème quand tu es prêt. Tu as raison, avant de lâcher ce script dans "la nature", il faut bien verrouiller les choses.

Juste une question : comme c'est du python, cela veux dire qu'il faudra faire installer le package idoine sur le NAS en prérequis ?

Personnellement cela ne me gêne pas mais, là ne risque-t-on pas de refroidir certains utilisateurs, même si c'est le "prix à payer" pour une automatisation complète du processus qui fait qu'au final on en oublie que le renouvellement se fait tout seul sans aucune intervention postérieure ?

Cordialement

oracle7😏

Lien vers le commentaire
Partager sur d’autres sites

@oracle7,

oui, le module python est un prérequis. Mais ce n'est pas le paquet le plus compliqué à installer, et Python est un prérequis aussi pour le module MailPlus . "Python modules" suffit, pas besoin de Python 3 en revanche. Je ne pense pas que ce soit un prérequis trop contraignant (surtout quand on se lance dans les manipulations sur les certificats ...). Mais je suis d'accord pour la remarque. Par contre, je suis incapable du travail de @PPJP ....en shell .... .

Par contre, je ne sais pas si il y a des modèles sur lesquels ce module Python ne serait pas compatible ?

Lien vers le commentaire
Partager sur d’autres sites

@oracle7, bonne nouvelle,

testé rapidement, mais a priori le script python reste compatible avec le python de base embarqué avec DSM. Il ne doit donc pas être indispensable d'installer un module python supplémentaire. Donc a priori pas de prérequis spécifique.

Lien vers le commentaire
Partager sur d’autres sites

C'est tout à fait possible à mon avis (théoriquement, je n'ai jamais testé) :

- Soit tu montes le dossier du NAS contenant les binaires python dans ton conteneur telegraf.
- Soit à mon avis la solution la plus propre pour ne pas toucher au NAS : tu utilises la fonctionnalité volume de docker. volume permet de créer un volume utilisable par n'importe quel autre conteneur. Tu crées donc un conteneur python (l'image officielle existe) et tu crées un volume avec les binaires python, tu pourras l'utiliser dans n'importe quel autre conteneur. Les volumes comme les networks peuvent être définis globalement, pas seulement dans les conteneurs.

Voir https://docs.docker.com/compose/compose-file/compose-file-v2/#volumes pour plus d'info sur les volumes.

Lien vers le commentaire
Partager sur d’autres sites

@oracle7,

dans le renouvellement du certificat, il reste un item que je n'ai pas su traiter :

         {
            "display_name" : "DSM Desktop Service",
            "display_name_i18n" : "common:web_desktop",
            "isPkg" : false,
            "owner" : "root",
            "service" : "default",
            "subscriber" : "system"
         },


De quoi s'agit'il ? comment le traiter ?

Bruno78

Lien vers le commentaire
Partager sur d’autres sites

@bruno78

Bonjour,

Belle colle que tu poses là. Franchement je ne saurais te répondre sur ce point, cela dépasse mes compétences et connaissances.

J'imagine que si tu poses la question c'est que l'on ne peut pas le relancer comme les autres services ? En plus, il me paraît important puisque a priori il concerne la gestion du bureau DSM ! il y a sûrement une commande spécifique pour lui autre que :

/usr/syno/bin/synopkg

. Non ?

Du coup après recherche, j'ai trouvé cela sur la toile : regardes la commande "synoservice" peut-être une piste de solution ?

Mais avec cela, j'enfonce peut-être une porte déjà ouverte chez toi ? Chez moi "synoservice --list" renvoie une liste impressionnante de services "actifs" dont DSM, alors ???

Cordialement

oracle7😏

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

@oracle7,

exact !

Par ailleurs :

root@ds918:# synoservice --status DSM
Service [DSM] status=[enable]
required upstart job:
        [synoscgi] is start.
=======================================
root@ds918:# synoservicecfg --status | grep synocgi
Service [synocgid] status=[enable]
        [synocgid] is start.
root@ds918:#

je pense que je vais d'abord tester sur un Virtual DSM .... pas envie de tout planter !

Lien vers le commentaire
Partager sur d’autres sites

@oracle7 .... non non pas du tout, au contraire. Je ne sais pas comment traiter ce point. Et d'ailleurs, à supposer que l'on redemarre DSM ou synoscgi ou synocgid (lequel ???), je ne sais pas vérifier si le nouveau certificat est pris en compte ou pas .... donc je ne sais pas quoi faire .... Mais je me dis que redemmarrer DSM Desktop n'est pas forcément anodin et/ou sans risque ... D'où le fait que je vais d'abord regarder sur un VDSM.

Lien vers le commentaire
Partager sur d’autres sites

@bruno78

Au cas où, sais-tu qu'il existe aussi la commande "synopkg star-depend <service>" du coup est-ce que cela ne te simplifierait-il pas les choses ?

Regardes accessoirement aussi les autres commandes disponibles (par ex : onoffall)...

Citation

# synopkg
usage: synopkg <command> [...]

command:
  start <package>                                         Start a package.
  stop <package>                                          Stop a package.
  restart <package>                                       Stop a package, then start it.
  resume <package>                                        Start a package without enable its service. It will do nothing
                                                          if enabled flag doesn't exist.
  pause <package> [skipupgradecheck]                      Stop a package without disable its service. It will do nothing
                                                          if enabled flag doesn't exist.
  start-depend <service>                                  Start all packages depend on specific service.
  stop-depend <service>                                   Stop all packages depend on specific service.
  onoffall start|stop [event] [param]                     Start or stop all the packages.
  install [--daemon-reload] <spk>                         Install a package through local spk.
  install_from_server <package> [volume] [user] [beta]    Install a package from server.
  uninstall <package>...                                  Uninstall one or more package.
  upgradeall [limitonly] [lang] [user]                    Upgrade all upgradable package.
  chkupgradepkg [lang]                                    Find all upgradable packages from server, and decide whether to
                                                          upgrade accorting to user settings.
  checkupdateall [lang] [user]                            Find all upgradable packages from server (use cache first), and
                                                          decide whether to upgrade accorting to user settings.
  status <package>                                        Get status of an installed package.
  is_onoff <package>                                      Check if a package is installed and if its enabled flag exists.
  version <package>                                       Get version of an installed package.
  query <spk>                                             Get a package's basic information from the spk.
  list [--name] [--depend-on <package>]                   List all installed package.
  log <package>                                           Get package's log path.
  checkupdate <package> [lang]                            Check if a package is updatable.
  sort_spk_by_dep_order <spk_path>...                     Sort given spks according to their dependencies.
  notify_stopped_by_firmware                              Send notifications about which packages are stopped by firmware.

Cordialement

oracle7😏

Lien vers le commentaire
Partager sur d’autres sites

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.