Aller au contenu

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


oracle7

Messages recommandés

@Audio

Cela se confirme, tu as omis la variable CERT_HOME lors le la procédure.

Tu n'as pas répondu : que contient le répertoire "/root/.acme.sh/"  ?

Il serait peut-être plus sage de reprendre à zéro la création de ton certificat lors que son échéance sera atteinte (avec le mode annule et remplace). Cette fois en pointant bien chaque opération pour ne pas en "oublier" ...

Cordialement

oracle7😉

Lien vers le commentaire
Partager sur d’autres sites

il y a 8 minutes, oracle7 a dit :

Cela se confirme, tu as omis la variable CERT_HOME lors le la procédure.

Tu n'as pas répondu : que contient le répertoire "/root/.acme.sh/"  ?

C'est encore pire que ce que je pensais, je n'ai pas trouvé de répertoire /volume1/.acme.sh. J'ai bien un répertoire acme.sh-master mais c'est je pense que c'est simplement l'installation du script acme.

Je vais suivre ton conseil @Oracle7 en menant une nouvelle procédure en mode annule et remplace. J'ai bien sauvegardé les clefs API OVH ce sera déjà ça de fait.

Encore merci @bruno78 et @oracle7

Cordialement

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Très beau travail de @oracle7 et @bruno78

Mais je vais me permettre de donner mon humble avis, sans intention blesser qui que ce soit.
Je trouve ce tuto trop compliqué, ce qui entraine des anomalies comme celle rencontré par @Audio (certainement variable CERT_HOME non définie lors de la création initiale du certificat) .

Pourquoi ne pas avoir procédé ainsi:

Installation acme:
Création du dossier acme
Après s'y être positionné, installation par un simple wget (ou curl)
On laisse tous les paramétrages par défaut

Création initiale d'un certificat:
On ne renseigne les variables d'environnement que pour les clé API
On lance uniquement  la commande de création du certificat (pas d'utilisation de deploy)
On crée le certificat depuis DSM avec les nouveaux fichiers obtenus de ACME.
On configure les services pour ce certificat.

Renouvellement:
Le script après les test initiaux se contente de
Lancer la même commande que lors de la création
Copier ( et renommer ) les nouveaux fichiers obtenus de ACME dans les packages et services concernés
Relancer les packages et services concernés

Enfin je trouve dommage que le script de renouvellement soit en python 2.7.
Python 2 est obsolète et n'est plus maintenu.
Si un jour DSM7 sort, il est très probable que seul python 3 y subsistera, rendant ce script inutilisable.

Lien vers le commentaire
Partager sur d’autres sites

@PPJP

Bonjour,

Merci pour ton appréciation.

Je vais essayer de répondre point par point à ta méthodologie.

il y a une heure, PPJP a dit :

Je trouve ce tuto trop compliqué

C'est un point de vue certes, c'est aussi pour cela que j'ai souhaité le détailler au maximum en apportant le plus d'explications possibles pour clarifier les manipulations afin que les utilisateurs comprennent bien ce qu'ils faisaient.

Je suis d'accord, on trouve plus simple sur la toile, mais ces TUTO ne donnent pas entière satisfaction quand au résultat attendu et sa fiabilité. l'automatisation à un prix (au moment de l'installation) mais ensuite on n'en entendant plus parler ... Par ailleurs, même en voulant faire "simple" avec unPixel vous aviez, en son temps, rencontré un certain nombre de difficultés, non ?

il y a une heure, PPJP a dit :

Après s'y être positionné, installation par un simple wget (ou curl)

C'est ce que j'ai essayé initialement mais cela ne marchait pas, le wget ne permet que de récupérer le fichier tar du script (confirmé par diverses sources sur Github) et a priori ne permet pas de lancer directement l'installation. Où alors j'ai raté un truc ?

il y a une heure, PPJP a dit :

On laisse tous les paramétrages par défaut

Surtout pas car sinon le certificat est généré dans le répertoire "/root/.acme.sh" et sachant que le répertoire "root" n'est pas stable dans le temps, il est effacé  en cas de mise à jour de DSM et on perd les fichiers du certificat. D'où l'usage de la variable CERT_HOME. idem pour la partie exécutable de acme.sh qui serait perdue aussi, ce qui serait encore plus dommageable pour assurer le renouvellement. D'où là encore d'usage de la variable ACME_HOME.

De plus, par défaut c'est la méthode HTTP_01 qui est utilisée et qui elle, nécessite d'ouvrir les ports 80 et 443 sur le NAS (le problème principal est le port 80 du point de vue sécurité). D'où l'usage de la variable CERT_DNS = "dns_xxx" qui elle utilise la méthose DNS_01 et qui n'a pas besoin d'ouvrir un quelconque port et est bien plus sécuritaire.

il y a une heure, PPJP a dit :

On lance uniquement  la commande de création du certificat (pas d'utilisation de deploy)

Tout l'intérêt du "deploy" est d'assurer la correcte mise à jour de l'environnement propre au NAS Synology. Je n'ai fait que reprendre en cela les préconisations des experts acme sur Github. En plus, on s'affranchit en l'automatisant, des problèmes liés à une double authentification qui serait en place. Pour mémoire, acme.sh est pour moi, assez "générique" quelque part et le "deploy" est là justement pour prendre en compte les spécificité du NAS Synology". Regardes le script "synology_dsm.sh" dans "/usr/local/share/acme.sh/deploy" pour t'en rendre compte si besoin en est.

il y a une heure, PPJP a dit :

Le script après les test initiaux se contente de
Lancer la même commande que lors de la création

Comme tu le ferais à la main, mais là en plus, il n'y a pas besoin de getter la date de renouvellement pour ouvrir les ports 80 et 443. Tout est automatique, on n'ouvre aucun port, ce qui est parfait du point de vue sécurité. La recopie des fichiers du certificat est de plus COMPLÈTE grâce au script Python, ce que ne fait pas justement la seule commande de renouvellement de acme.sh comme tu le sais très bien.

il y a une heure, PPJP a dit :

Enfin je trouve dommage que le script de renouvellement soit en python 2.7.
Python 2 est obsolète et n'est plus maintenu.

Certes, mais pour l'heure on aura utilisé les ressources minimales disponibles sur le NAS. @bruno78 seul peut le dire si une évolution à court terme du script vers Python 3 est envisageable. Pourquoi pas, a priori et sauf erreur de ma part,  il marche déjà avec Python 3, donc il n'y aurait aucun problème mais je peux me tromper. Saches aussi, qu'à la base on ne souhaitait pas complexifier plus avant la procédure en faisant installer le package Python 3 (même si c'est simple au demeurant). Maintenant, en attendant que le serpent de mer qu'est DSM7 ne refasse surface pour de bon, cette procédure, dans l'état, répond au besoin. Il sera toujours temps d'évoluer alors, d'autant plus que cette version DSM7 pourrait bien aussi bousculer bien d'autres choses et notamment pourquoi pas, la façon dont sont gérés aujourd'hui les certificats. Donc wait and see...

Maintenant si tu as d'autres suggestions d'améliorations, avec @bruno78 nous sommes preneurs dans juste mesure de nos capacités respectives. Cela doit pouvoir venir en complément des fonctions accessibles via le mode "manuel" du script. Si cela doit toucher la partie automatique, il faudra alors être très convainquant pour ne pas complexifier encore plus ...

Cordialement

oracle7😉

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

@oracle7

Le 30/05/2020 à 10:35, oracle7 a dit :

5.1        Cas de la double authentification

Question, j'ai une double authentification mais pour certaines raisons (support technique Synology) j'ai du la supprimer.

Lorsque je vais la remettre en place, est-ce que le DID sera toujours le même ?

Si oui, pas de problème, sinon que dois-je et comment le faire ?

Merci pour ton aide.

 

Lien vers le commentaire
Partager sur d’autres sites

Je comprends le débat et je me sens un peu fautif de l'avoir provoqué car j'ai bien du faire une bourde (oubli de la variable CERT_HOME) lors de la génération initiale du certificat. Même si ça parait compliqué je suis content de ne plus:

- Me prendre la tête avec la demande de renouvellement de certificat LE tous les 3 mois à partir de DSM avec les manips afférentes,

- Devoir payer tous les ans un certificat SSL à G...car c'est ce que j'avais fini par faire.

errare humanum est, perseverare diabolicum !

Je n'aime pas rester sur une bourde et savoir qu'à terme mon NAS et pourra pas renouveler seul son certificat. Donc j'ai tout repris, comme conseillé par @oracle7 .

Maintenant j'ai bien les différents répertoires en place et le script Python me donne en sortie:

Tâche : RenewCertif_W_LE
Heure de début : Mon, 10 Aug 2020 16:14:12 GMT
Heure d’arrêt : Mon, 10 Aug 2020 16:14:12 GMT
État actuel : 1 (Interrompu)
Sortie standard/erreur :

-- SYNOCERT     : /usr/syno/etc/certificate
-- LOCALCERT    : /usr/local/etc/certificate
-- ACMECERTS    : /volume1/Certs
-- ndd.tld      : xxxxxxx.fr
-- certtype     : RSA
-- scriptdir    : /volume1/Certs/Acme_renew
-- log          : True
-- test         : False
-- clean        : False

-- Ancien certificat par DEFAULT, a renouveller : IGkOxz

-- Fichier de configuration du ndd.tld : /volume1/Certs/xxxxxxx.fr/xxxxxxx.fr.conf
-- Date de renouvellement autorisee (T0+60 jours par defaut) : Fri Oct  9 13:39:49 UTC 2020
--- La date de renouvellement du certificat ( Fri Oct  9 13:39:49 UTC 2020 ) n'est pas atteinte
--- Inutile de renouveller le certificat -> fin du script

Donc pas de souci pour  @bruno78 le script fonctionne!

Le détail apporté au Tuto aide à reprendre les opérations quand on s'est trompé, surtout quand on est novice et qu'il y a des notions qu'on ne soupçonne même pas quand on suit pas à pas un tuto. J'ai encore beaucoup de choses à apprendre et j'ai donc besoin de beaucoup de Tuto...

Cordialement

Audio

 

Lien vers le commentaire
Partager sur d’autres sites

@Pinpon_112

Bonjour,

il y a 48 minutes, Pinpon_112 a dit :

Lorsque je vais la remettre en place, est-ce que le DID sera toujours le même ?

Si oui, pas de problème, sinon que dois-je et comment le faire ?

NON, je pense qu'il sera différent mais je n'en suis pas sûr. Aussi, dans le doute on fait comme s'il était différent.

Tu vas alors dans le fichier "/volume1/Certs/ndd.tld/ndd.tld.conf". Tu l'édites et là soit tu ajoutes une ligne (si elle n'existe pas) soit tu modifies la ligne :

Citation

SAVED_SYNO_DID='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

Avec xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx = le nouveau DID. Attention ce sont des simples cotes " ' " et PAS des guillemets " " " qui entourent la valeur du DID.

Cordialement

oracle7😉

@Audio

Bravo, je vois que tu as réussis cette fois 😀😀😀.

Tu sais on fait tous des erreurs, c'est notre nature d'humain qui veut cela. Le principal est d'apprendre de ces erreurs pour ne plus les refaire ... Voilà pour le 1/4 d'heure philo ... 😜

Cordialement

oracle7😉

Lien vers le commentaire
Partager sur d’autres sites

Bonjour, @oracle7, @Audio, @Pinpon_112, @PPJP

je viens rajouter mon grain de sel 😃 pour la partie script Python :

  • c'était un "nice to have" à la suite du Tuto d' @oracle7, afin d'avoir une automatisation complète. Mais on est bien d'accord, renouveler son certificat et ré-affecter les services à la main, 1 fois tout les 3 mois, ce n'est pas la mer à boire (et ça permet de revérifier périodiquement ses paramètres, et les mettre à jour si nécessaire)
  • au delà du "nice to have", c'était un petit défi pour moi, en tant qu'amateur ...., et cela m'a permis / obligé à rentrer un peu plus en profondeur dans le Syno, ce qui est toujours intéressant.
  • Au tout début, il y a eu débat Python 2.7 vs 3.x. J'avais commencé en 3.x, mais au final on s'est dit qu'il valait mieux le faire sans paquet supplémentaire à installer, et donc utiliser le Python 2.7 embarqué de base du Syno
  • La conséquence, évidemment, @PPJP a raison, c'est l'obsolescence de cette version. Ceci dit, les fonctions utilisées sont basiques, donc au pire a priori on risque une évolution de syntaxe en passant en Python3.
  • Donc soit je travaille dessus en dés à présent en Python3, soit on attend la sortie du DSM7 ..... et à mon avis ce ne sera pas le passage python2 vers python3 le plus grand défi !

Par ailleurs, je suis en train de faire une évolution du script actuel, pour y intégrer un log au niveau python lui-même (pas uniquement le log du script acme.sh).

Cdt

Bruno78

 

Lien vers le commentaire
Partager sur d’autres sites

@oracle7

Je vais également essayer de répondre point à vos remarques
Tout d'abord, je tiens à que je n'utilise pas acme et que je ne l'ai  que rapidement consulté lorsque je suis intervenu sur le tuto de unPixel.
Le seul problème à l'époque était le non redémarrage de quelques paquets, car je n'avais pas pris le temps de creuser aussi profondément que ne l'a fait @bruno78 (bravo) sur les dépendances.

Il y a 2 heures, oracle7 a dit :

Maintenant si tu as d'autres suggestions d'améliorations, avec @bruno78 nous sommes preneurs dans juste mesure de nos capacités respectives. Cela doit pouvoir venir en complément des fonctions accessibles via le mode "manuel" du script. Si cela doit toucher la partie automatique, il faudra alors être très convainquant pour ne pas complexifier encore plus ...

Le but de mes suggestions était simplement de simplifier d'une part les opérations pour les utilisateurs du tuto et d'autre part de simplifier drastiquement le script de renouvellement.
J'ai bien compris le message et n'interviendrai plus sur ce fil.

Réponses valables si pas de changements  de ACME depuis mon intervention sur le tuto de unPixel.

Il y a 2 heures, oracle7 a dit :

C'est ce que j'ai essayé initialement mais cela ne marchait pas, le wget ne permet que de récupérer le fichier tar du script

Non, , étant positionné dans /usr/local/share/acme.sh un wget installe directement tous les fichiers nécessaires dans ce dossier

Il y a 2 heures, oracle7 a dit :

Surtout pas car sinon le certificat est généré dans le répertoire "/root/.acme.sh"

Non mais dans /usr/local/share/acme.sh

Il y a 2 heures, oracle7 a dit :

De plus, par défaut c'est la méthode HTTP_01 qui est utilisée et qui elle, nécessite d'ouvrir les ports 80 et 443 sur le NAS

Cette info est transmise par l'option --dns   xxx  de la commande de création du certificat

Il y a 2 heures, oracle7 a dit :

mais là en plus, il n'y a pas besoin de getter la date de renouvellement pour ouvrir les ports 80 et 443

Le script de renouvellement peut parfaitement vérifier l"ancienneté du certificat et décider s'il faut lancer le renouvellement (il le fait)
La commande de renouvellement utilisant l’option  --dns ne nécessite pas l'ouverture de ports

Enfin concernant le script
Il est obligé d''aller récupérer toutes les personnalisations faites lors de la création initiale!
Quel est l’intérêt de conserver l'ancien certificat (durée de vie limitée) et d'en créer un nouveau ?
Ce qui entraine de mémoriser les data de l'ancien fichier INFO pour de les transférer dans le nouveau.
Le transfert des fichiers créés par ACME et renommés, ainsi que le redémarrage des packagses et services tels que réalisés par le script actuel seraient suffisants.
La liste des certificats dans DSM va grossir !

@bruno78

il y a une heure, bruno78 a dit :

Mais on est bien d'accord, renouveler son certificat et ré-affecter les services à la main, 1 fois tout les 3 mois, ce n'est pas la mer à boire

Il n'en était question que lors de la création initiale du certificat le script actuel s'en chargeant lors du renouvellement.

Fin de mon intervention sur ce fil.
Cordialement

Lien vers le commentaire
Partager sur d’autres sites

@PPJP

il y a 8 minutes, PPJP a dit :

J'ai bien compris le message et n'interviendrai plus sur ce fil.

Il n'y a aucune raison de prendre ainsi la mouche. Bien au contraire, tes avis sont appréciés et utiles à la communauté. Je trouve seulement dommage de prendre cette position ...

En espérant, pouvoir poursuivre ces échanges à toi.

Cordialement

oracle7😉

Lien vers le commentaire
Partager sur d’autres sites

@oracle7

Bonjour,

Le 10/08/2020 à 17:24, oracle7 a dit :

NON, je pense qu'il sera différent mais je n'en suis pas sûr. Aussi, dans le doute on fait comme s'il était différent.

Tu vas alors dans le fichier "/volume1/Certs/ndd.tld/ndd.tld.conf". Tu l'édites et là soit tu ajoutes une ligne (si elle n'existe pas) soit tu modifies la ligne :

Citation

SAVED_SYNO_DID='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

Avec xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx = le nouveau DID. Attention ce sont des simples cotes " ' " et PAS des guillemets " " " qui entourent la valeur du DID.

Je confirme, le DID est bien différent.  J'ai donc fait ce que tu as dit ci-dessus.

Un grand merci pour ton aide.

Peut-être que tu peux mettre un adendum dans le tuto pour expliquer la chose ?

Bien à toi,

Lien vers le commentaire
Partager sur d’autres sites

Petite précision pour ceux (une extrême minorité) qui hébergeraient leur propre serveur DNS sur leur NAS sans l'ouvrir au monde entier

Les serveurs Let's Encrypt ont besoin de récupérer le(s) enregistrement(s) TXT pour générer les certificats. Il faut donc penser à les autoriser dans le pare-feu à accéder à votre serveur DNS :

  • 66.133.109.36 (outbound1.letsencrypt.org)
  • 64.78.149.164 (outbound2.letsencrypt.org)

Pour la petite histoire, mon domaine domaint.tld est hébergé chez mon registrar et j'utilise des domaines pour chacun de mes NAS (nas1.domain.tld, nas2.domaint.tld, ...). Ces domaines sont hébergés respectivement sur chaque NAS et ne sont pas diffusés au monde entier mais uniquement dans les réseaux que j'utilise. Il m'a donc fallu autoriser les serveur de Let's Encrypt à accéder à ces serveurs DNS pour générer les certificats wildcard de chaque NAS (nas1.domain.tld et *.nas1.domain.tld, nas2.domain.tld et *.nas2.domain.tld, ...).

Ayant validé la chose avec une capture tcpdump, j'ai pu aussi voir que Let's Encrypt utilise toute une ribambelle de serveurs chez Amazon qui requêtent également le serveur DNS. Ils sont parfaitement facultatifs puisque les certificats sont correctement générés avec les deux seuls serveurs historiques du service.

Lien vers le commentaire
Partager sur d’autres sites

@PiwiLAbruti

Bonjour,

Juste pour m'assurer que j'ai bien compris ton propos, en clair ta précision concerne uniquement ceux qui ont installé aussi une zone public pour leur serveur DNS sur leur NAS . C'est bien cela ?

Car dans le cas de la méthode de génération proposée ici, cet échange entre avec les serveurs LetsEncrypt semble "transparent" pour l'utilisateur. Je présume (sous réserve de me tromper) qu'il se passe directement entre les serveurs d'OVH (du registar si autre) et ceux de LetsEncrypt.

Pour ma part, je n'ai jamais eu besoin d'autoriser ces @IP dans le pare-feu. Vu du Log (voir l'ex de log dans le TUTO), on ne fait qu'écrire dans la zone DNS du domaine.tld chez OVH les fameux enregistrements TXT nécessaires à la vérification et ceux-ci en sont ensuite supprimés à l'issue.

Au passage, à ma connaissance @Jeff777 fait parti de la minorité dont tu parles et je pense qu'il serait intéressé de ton retour d'expérience afin de savoir comment tu procèdes pour générer le certificat LetsEncrypt dans ce cas précis.

Cordialemement

oracle7😉

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

@oracle7 Oui, ma remarque ne concerne qu'une poignée d'utilisateurs qui ont déclaré une ou plusieurs zones DNS publiques dans DNS Server sur leur NAS.

Les serveurs Let's Encrypt vont alors communiquer directement avec le serveur DNS (paquet DNS Server) du NAS pour établir les certificats.

Lien vers le commentaire
Partager sur d’autres sites

Hello à tous,

J'ai un vieux DS1010+, donc bloqué en DSM 5. J'avais mis en place acme et let's encrypt grâce à ce tuto https://www.naschenweng.info/2017/01/06/automatic-ssl-renewal-encrypt-dsm-5-x-synology-ds1010-dns-01-verification/ qui a bien fonctionné jusqu'à cet été. De mémoire, j'ai juste ajouté le wildcard en début d'année et c'est tout ce que j'ai changé. RàS lors du renouvellement auto de Mai.

En revanche le renouvellement de cet été n'est pas du tout passé, bloqué sur cette erreur :

Please refer to https://curl.haxx.se/libcurl/c/libcurl-errors.html for error code: 60
Error add txt for domain:_acme-challenge.mondomaine.fr

Au final, mon certificat a expiré et je n'accède plus au NAS. 😔

 

Bref, voyant ici ce tuto tout nouveau tout beau, je me suis dit que j'allais le suivre et qu'il y avait peut-être des changements côté acme ou autre qui m'avaient échappé (je précise que je ne comprend pas la moitié de ce qui est dit dans ce tuto, je vois bien le sens général, mais c'est tout). Et du coup, je suis là encore bloqué au moment de la création du certificat, avec la même erreur :

Please refer to https://curl.haxx.se/libcurl/c/libcurl-errors.html for error code: 60
Please refer to https://curl.haxx.se/libcurl/c/libcurl-errors.html for error code: 60
error
The consumer key is invalid: xxxxxxxxxxxxxxxxxxxxxxxxx
Please retry to create a new one.
Error add txt for domain:_acme-challenge.mondomaine.fr

J'ai vérifié la Consumer Key, pas d'erreur lors du copier-coller, c'est bien la bonne (?).

J'ai recréé les AK, AS et CK et relancé acme, sans succès, même erreur.

 

Est-ce que je ne remplis pas les prérequis avec mon DSM 5 ? Qu'est-ce qui peut faire que ça marchait en Mai et plus depuis, même avec ce tuto testé et éprouvé ?

Merci.

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

@Ooook

Bonjour,

  1. Comme sur tout forum, il est d'usage que les nouveaux membres passent par la rubrique [PRESENTATION] pour faire la leur. Certains ici, y sont sensibles et de plus cela facilite les réponses en fonction du niveau de compétences du membre. Cela dit rassures-toi il n'est pas trop tard pour bien faire ...
  2. Ta mésaventure avec ta version de curl trop ancienne, est peut-être l'arbre qui cache la forêt !
    Saches que la présente méthode de génération d'un certificat wilcard LetsEncrypt avec "acme.sh" n'a pas été validée pour DSM5. Je ne peut donc te garantir qu'elle fonctionne parfaitement sous cet OS et ce d'autant plus, pour le script Python de renouvellement automatique du certificat qui exploite l'architecture de DSM 6.2.x minimum. Il est possible que l'organisation des fichiers liés au certificat puisse avoir évoluée entre DSM5 et DSM6.2.x (ce que je ne sais), et donc génère des dysfonctionnements d'où ma présente mise en garde.

Donc une mise en œuvre de cette procédure sous DSM5 est à tes risques et périls. A bon entendeur ...

Cordialement

oracle7😉

Lien vers le commentaire
Partager sur d’autres sites

Sur le 1., je suis inscrit depuis tellement longtemps que je pensais l'avoir fait... mais il semble bien que non. My bad, c'est corrigé:redface:

Sur le 2., oui, je me doutais bien, mais on ne sait jamais. :wink: Et en décortiquant je vois que ton tuto n'est finalement pas si différent de celui que j'avais appliqué.

Pour info, j'ai effectivement eu 2 soucis avec ton tuto sur DSM 5 :

  1. comme dit juste au dessus, la librairie curl est trop ancienne sur le DSM 5, il faut une version plus à jour
    • donc install ipkg et ipkg GUI
    • puis install curl depuis ipkg GUI
    • puis remplacement du curl DSM par le curl ipkg via un lien symbolique
      (je peux détailler tout ça si besoin)
       
  2. j'ai ensuite un soucis au moment de la création, il ne reconnaît pas ma Consumer Key. Je fais donc la création, mais sans renseigner la CK, ce qui ajoute une petite étape supplémentaire à faire avec OVH
    •  En l'absence de CK, la commande
      ./acme.sh --issue --keylength 4096 -d "$CERT_DOMAIN" -d "$CERT_WDOMAIN" --dns "$CERT_DNS"

      renvoie

      [Thu, Aug 25, 2016 10:54:03] Using OVH endpoint: ovh-eu
      [Thu, Aug 25, 2016 10:54:04] OVH consumer key is empty, Let's get one:
      [Thu, Aug 25, 2016 10:54:05] Please open this link to do authentication: https://eu.api.ovh.com/auth/?credentialToken=n0Qbjm6wBdBr2KiSqIuYSEnixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
      [Thu, Aug 25, 2016 10:54:05] Here is a guide for you: https://github.com/Neilpang/acme.sh/wiki/How-to-use-OVH-domain-api
      [Thu, Aug 25, 2016 10:54:05] Please retry after the authentication is done.
      [Thu, Aug 25, 2016 10:54:05] Error add txt for domain:_acme-challenge.mytest.mydomain.com
    • Cliquer sur le lien https://eu.api.ovh.com/auth/?credentialToken=n0Qbjm6wBdBr2KiSqIuYSEnixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

    • Et sur la page OVH, il ne reste qu'à choisir la durée de validité "Unlimited" puis "Authorize Access".
       

  3. j'ai pu aller ensuite jusqu'au Deploiement et là ça bloque de nouveau. J'ai donc repris mon ancien tuto et généré les certificats "autrement", avec un déploiement intégré :
     /usr/local/share/acme.sh/acme.sh --issue --post-hook "kill -USR1 `cat /run/httpd/httpd-sys.pid`" --keylength 4096 -d "$CERT_DOMAIN" -d "$CERT_WDOMAIN" --dns "$CERT_DNS" --certpath /usr/syno/etc/ssl/ssl.crt/server.crt --keypath /usr/syno/etc/ssl/ssl.key/server.key --fullchainpath /usr/syno/etc/ssl/ssl.intercrt/server-ca.crt

     

    Ainsi les certificats générés sont à la fois dans /volume1/Cert et dans les emplacements prévus sur DSM 5 (/usr/syno/etc/ssl/...).
     
  4. Dernier point, l'automatisation du renouvellement. Là c'est le cron le plus simple à mettre en place :
    • Edition de la crontab
      vi /etc/crontab

       

    • et remplissage avec l'exécution régulière d'acme pour renouveler avant expiration
      3       2       *       *       2       root    /usr/local/share/acme.sh/acme.sh --cron

       

    • et pour s'assurer que ça fonctionne, on le lance une fois à la main en ssh :
      /usr/local/share/acme.sh/acme.sh --cron

       

    • qui renvoie quelque chose de ce genre :
      [Sat Aug 29 16:41:39 CEST 2020] ===Starting cron===
      [Sat Aug 29 16:41:39 CEST 2020] Already uptodate!
      [Sat Aug 29 16:41:39 CEST 2020] Upgrade success!
      [Sat Aug 29 16:41:39 CEST 2020] Auto upgraded to: 2.8.7
      [Sat Aug 29 16:41:39 CEST 2020] Renew: 'mondomaine.fr'
      [Sat Aug 29 16:41:39 CEST 2020] Skip, Next renewal time is: Wed Oct 28 14:49:48 2020
      [Sat Aug 29 16:41:39 CEST 2020] Add '--force' to force to renew.
      [Sat Aug 29 16:41:39 CEST 2020] Skipped mondomaine.fr
      [Sat Aug 29 16:41:39 CEST 2020] ===End cron===
      

       

Voilà pour mon expérience avec acme, let's encrypt et DSM 5. :wink:

(en espérant que tout se passe bien lors du renouvellement d'octobre... :lol: )image.gif

image.gif

image.gif

image.gif

image.gif

Modifié par Ooook
l'éditeur de m'aime pas
Lien vers le commentaire
Partager sur d’autres sites

@Ooook

Bonjour,

C'est sympa de ta part d'avoir fait ce retour détaillé.  Cela pourra sûrement servir à tous ceux qui sont encore sous DSM5. Bien qu'ils ne doivent pas être légion tout même.

Il y a 1 heure, Ooook a dit :

Ainsi les certificats générés sont à la fois dans /volume1/Cert et dans les emplacements prévus sur DSM 5 (/usr/syno/etc/ssl/...).

J'espère aussi que le déploiement que tu as fait sera exhaustif. Là j'ai un doute mais je peux me tromper. A voir à l'usage ...

Pour le renouvellement j'ai aussi quelques craintes car, de ce que j'ai compris, l'organisation de l'architecture DSM5 semble bien différente de celle de DSM6 (déjà l'emplacement que tu cites, n'est plus d'actualité. Du coup comme le script Python exploite cette dernière (DSM6) "à fond", je ne suis guère optimiste sur l'issue. Tu auras sûrement des adaptations à faire ...

Cordialement

oracle7😉

Lien vers le commentaire
Partager sur d’autres sites

Merci @oracle7

 

Le 29/08/2020 à 18:57, oracle7 a dit :

J'espère aussi que le déploiement que tu as fait sera exhaustif. Là j'ai un doute mais je peux me tromper. A voir à l'usage ...

Peux-tu me préciser cette partie "déploiement exhaustif" ? C'est en rapport avec cette partie du tuto ? que le certificat soit bien valide pour chaque sous-domaine ? Le problème c'est qu'il n'y a pas d'équivalent en DSM 5 😞 

image.png

 

En pratique, je viens de voir que j'ai effectivement des soucis, mais je ne sais pas si ce n'est pas en essayant de réparer les certificats que j'aurais cassé le reste...

  • le webmail fonctionne en local avec le hostname mais est inaccessible depuis mondomaine.fr/mail, avec le syno qui me met le beau message suivant (un peu comme si le LoopBack de mon routeur ne fonctionnait plus) : 

image.png.21def676dbd8e31392ec1e596c27779f.png

  • Idem avec PhotoStation et Webstation
  • Par contre FileStation fonctionne sans soucis

 

Au moins j'ai récupéré mon webdav et l'accès au syno, c'est déjà un premier pas. 😕 

 

Edit : La suite (et la résolution) sont ici

 

 

Modifié par Ooook
Lien vers le post dédié à mes soucis (résolus du coup)
Lien vers le commentaire
Partager sur d’autres sites

@Ooook

Bonjour,

il y a 8 minutes, Ooook a dit :

Peux-tu me préciser cette partie "déploiement exhaustif" ? C'est en rapport avec cette partie du tuto ? que le certificat soit bien valide pour chaque sous-domaine ? Le problème c'est qu'il n'y a pas d'équivalent en DSM 5 😞

Tu le dis toi même d'une part vis à vis de l'affectaion du certificat aux services et d'autre part par rapport à l'organisation de DSM5 qui est différente de DSM6.

il y a 10 minutes, Ooook a dit :
  • le webmail fonctionne en local avec le hostname mais est inaccessible depuis mondomaine.fr/mail, avec le syno qui me met le beau message suivant (un peu comme si le LoopBack de mon routeur ne fonctionnait plus) : 

 

Là, à mon avis tu as un autre soucis (coté routeur ???) et qui n'est pas lié au certificat car tu aurais alors plutôt des alertes de sécurité.

Cordialement

oracle7😉

Lien vers le commentaire
Partager sur d’autres sites

Renouvellement automatique avec  le nouveau script python, juste besoin de me reconnecter au site de l'API d'OVH et tout a fonctionné parfaitement.

Récup des 3 fichiers du certificat pour remplacer à la main ceux du 2ème syno et là encore, un sans faute.

Merci @Oracle7 et à @bruno78, vous avez vraiment fait du beau travail. Grace à vous l'installation et le renouvellement sont à la portée de tous.

Modifié par oudin
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.