Aller au contenu

[TUTO] Certificat Let's Encrypt avec acme.sh & api Ovh en Docker (DSM6/7) (Update 07/09/22)


Messages recommandés

Posté(e)

@Einsteinium j'espère que c'est une simple coïncidence. C'est tout de même étonnant que ça se soit passé juste après la maj de DSM.

il y a 48 minutes, Einsteinium a dit :

taper cette ligne dans l’interface visuelle est une vraie plaie

Je confirme. Je n'ai pas trouvé le moyen de faire un copier/coller dans le terminal. Il a fallu tout rentrer à la mano. Mais bon, on ne le fait pas tous les jours non plus. Ceci dit, une saisie via ssh serait plus facile en effet.

Posté(e)

Bonjour

Question vous faites comment quand vous avez deux nas sur le même réseau avec le ou les certificat(s).

Je parle de leur génération (j'ai une seule adresse Ip fixe en wan) et de leurs installation sur les nas ? 

Ps: c'est ma question en cette veille de noël.

  • Einsteinium a modifié le titre en [TUTO] Certificat Let's Encrypt avec acme.sh & api Ovh en Docker (DSM6/7)
Posté(e)

Voilà j'ai encore actualisé le tutoriel, juste un doute sur les '' dans la ligne envoyait au dock, je ne sais pas comment le prends notre syno, si quelqu'un peut faire un retour que je rectifie le cas échéant.

J'ai mis un update manuel du hook pour dsm 7 (qui marche pour dsm 6 aussi), car cela ne semble pas vouloir mettre à jour côté dépôt github...

Voilà bonnes fêtes de nöel à tous 😉

Posté(e) (modifié)

Bonjour @Einsteinium,

si on suit la doc, oui il faut les doubles quotes (").

Maitenant, je m'y suis peut-être mal pris, mais avec ou sans le double quote, je n'arrive pas à faire l'export des variables dans le container via docker exec -it ....

Bruno78

Bonnes Fêtes à toutes et à tous ... et restez prudents.

Modifié par bruno78
Posté(e)

Donc si je comprends bien @Einsteinium avec une seule adresse Ip et un ndd sont généré un certificat qui nous sert sur tous les périphérique du réseau (nas, routeur, etc..).

Pour le docker je peux faire un docker par nas : DS216+II et le DS1813+ ( je viens de voir que le DS1813+ est compatible docker, ce type de docker ça doit passer)

 

Posté(e)

Oui @firlin, mais je pense que le plus simple est de créer un certificat par NAS, soit par Docker si compatible, soit par SSH avec la méthode Github qui est quasi identique à celle par Docker et de faire un renouvellement automatique.

https://github.com/acmesh-official/acme.sh/wiki/Synology-NAS-Guide

J'ai mis en place la méthode de ce tuto sur le 713+ et celle de Github sur le 214+

Posté(e)
Il y a 9 heures, Einsteinium a dit :

Et pourquoi pas avoir fait un deploy vers le 214+ ?

Tout d'abord parce que je ne sais pas comment faire un deploy vers un NAS distant, et puis ça me permet de tester les deux méthodes 😉

Posté(e)

Hello,

Merci pour ce tutoriel. Mon petit retour est que je me suis cassé les dents sur le scripting via le planificateur de tâche. Lorsque je voulais lancer les commandes docker, j'avais toujours une erreur : the input device is not a TTY.

J'ai donc enlevé l'option -ti pour que ce ça fonctionne, il faudrait peut-être le préciser dans le tutoriel.

Posté(e)
il y a une heure, Einsteinium a dit :

@kerod Tu avais bien mis root ? Le retrait de t en laissant -i sinon 😉

@Einsteinium oui tout était bien en root. Mais pour avoir lu sur Google il veut faire une interaction terminal qui n’existe pas et la solution était d’enlever le -it.

30min d’installation pour moi. J’attends donc le renouvellement pour voir si la suite fonctionne.

PS : j’étais sur la solution d’oracle7 et bruno avant, on verra la différence dans deux mois. 

Posté(e)

@Einsteinium

J'ai testé ce jour la planification via le planificateur de tâches en y insérant directement le code (hors SSH).

J'ai un message d'erreur...

[Mon Dec 28 00:24:02 UTC 2020] SYNO_Username & SYNO_Password must be set
[Mon Dec 28 00:24:02 UTC 2020] Error deploy for domain

Je tiens à préciser que les deux sont existants...Est-ce réellement possible de le faire via le planificateur ?

Posté(e)

Je vais éditer dans quelques jours par rapport au déploiement.

Cela sera en ssh : docker exec -ti Acme sh

Puis taper les exports et après le hook de déploiement, voir plus simplement mettre les exports dans le config et juste faire la commande de déploiement.

Posté(e)

Retour après le renouvellement de mon premier certificat (l'autre c'est demain)

Ca n'a pas été un fleuve tranquille.

Tout d'abord, je n'ai rien changé par rapport au tuto d'origine, sauf le rajout de la mise à jour automatique de acme.sh pour laquelle je reviendrais plus bas.

Le renouvellement était prévu le 27. La procédure s'est bien lancée mais après de multiples tentatives visibles dans les logs, le renouvellement a échoué. Le blocage venait en fait de l'impossibilité de valider les enregistrements TXT dans la zone DNS.

Mais la conséquence la plus surprenante de ce blocage c'est le changement dans le fichier ndd.conf qui ne contenait plus que ça :

Le_Webroot='dns_ovh'
Le_Webroot='dns_ovh'
Le_PreHook=''
Le_RenewHook=''
Le_PostHook=''
Le_RenewHook=''
Le_API='https://acme-v02.api.letsencrypt.org/directory'
Le_Keylength='4096'
Le_OrderFinalize='https://acme-v02.api.letsencrypt.org/acme/finalize/xxxxxxxxxxxxxxx'

Toutes les infos du ndd avaient disparues !

J'ai récupéré l'ancien fichier dans mes sauvegardes pour repartir sur les mêmes bases.

Je suis allé aussi sur ma zone DNS où j'ai supprimé les enregistrements TXT qui trainaient.

Et oh surprise, mon certificat s'est renouvelé pendant la nuit. Il semblerait que les enregistrements TXT y soient pour quelque chose puisque c'est la seule modification que j'ai faite.

Cependant, il a fallu pas moins de 735 enregistrements dans les logs pour obtenir le certificat et 26 de plus pour le déployer.

Et en analysant de plus près, il semblerait que le renouvellement se soit lancé 2 fois. Pourquoi ? Peut-être un pour le ndd et un autre pour le *.ndd, mais je n'en suis pas du tout sûr.

Et enfin il y a un autre changement important : le fichier ndd.conf a été modifié avec les nouvelles données de renouvellement du certificat, pas de problème avec ça, mais toutes les premières lignes du LE_domain au LE-keylength ont disparues....

Le_OrderFinalize='https://acme-v02.api.letsencrypt.org/acme/finalize/xxxxxxxxxxxxxxxxxxx'
Le_LinkOrder='https://acme-v02.api.letsencrypt.org/acme/order/xxxxxxxxxxxxxxxxxxxx'
Le_LinkCert='https://acme-v02.api.letsencrypt.org/acme/cert/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
Le_CertCreateTime='1609200232'
Le_CertCreateTimeStr='Tue Dec 29 00:03:52 UTC 2020'
Le_NextRenewTimeStr='Sat Feb 27 00:03:52 UTC 2021'
Le_NextRenewTime='1614297832'
SAVED_SYNO_Scheme='http'
SAVED_SYNO_Hostname='172.17.0.1'
SAVED_SYNO_Port='5000'
SAVED_SYNO_Username='xxxx'
SAVED_SYNO_Password='xxxxxxxxxxxxxxx'
SAVED_SYNO_DID=''
SAVED_SYNO_Certificate='xxxxxxxxxxxxxxx'

Je me demande pourquoi ces infos ne sont pas reconduites dans le fichier. Est-ce qu'elles seront récupérées directement à partir du certificat existant lors du prochain renouvellement ? Et-ce que quelqu'un qui a eu le renouvellement automatique peut vérifier si c'est pareil sur son fichier de conf ?

Enfin, concernant la mise à jour de acme.sh via le planificateur de tâche qui est apparue un temps sur le tuto, il me semble qu'elle est inutile car la vérification se fait systématiquement au lancement du script qui je suppose lance la maj s'il y a une nouvelle version. A confirmer.

[Tue Dec 29 00:03:00 UTC 2020] [Tue Dec 29 00:03:00 UTC 2020] Running cmd: cronRunning cmd: cron

[Tue Dec 29 00:03:00 UTC 2020] [Tue Dec 29 00:03:00 UTC 2020] Using config home:/acme.sh
Using config home:/acme.sh
[Tue Dec 29 00:03:00 UTC 2020] default_acme_server[Tue Dec 29 00:03:00 UTC 2020] 
default_acme_server
[Tue Dec 29 00:03:00 UTC 2020] [Tue Dec 29 00:03:00 UTC 2020] ACME_DIRECTORY='https://acme-v02.api.letsencrypt.org/directory'
ACME_DIRECTORY='https://acme-v02.api.letsencrypt.org/directory'
[Tue Dec 29 00:03:00 UTC 2020] [Tue Dec 29 00:03:00 UTC 2020] ===Starting cron===
===Starting cron===
[Tue Dec 29 00:03:00 UTC 2020] Using config home:/acme.sh
[Tue Dec 29 00:03:00 UTC 2020] Using config home:/acme.sh
[Tue Dec 29 00:03:00 UTC 2020] ACME_DIRECTORY='https://acme-v02.api.letsencrypt.org/directory'
[Tue Dec 29 00:03:00 UTC 2020] ACME_DIRECTORY='https://acme-v02.api.letsencrypt.org/directory'
[Tue Dec 29 00:03:00 UTC 2020] GET
[Tue Dec 29 00:03:00 UTC 2020] GET
[Tue Dec 29 00:03:00 UTC 2020] url='https://api.github.com/repos/acmesh-official/acme.sh/git/refs/heads/master'
[Tue Dec 29 00:03:00 UTC 2020] url='https://api.github.com/repos/acmesh-official/acme.sh/git/refs/heads/master'
[Tue Dec 29 00:03:00 UTC 2020] timeout=
[Tue Dec 29 00:03:00 UTC 2020] timeout=
[Tue Dec 29 00:03:01 UTC 2020] _CURL='curl --silent --dump-header /acme.sh/http.header  -L  -g '
[Tue Dec 29 00:03:01 UTC 2020] _CURL='curl --silent --dump-header /acme.sh/http.header  -L  -g '
[Tue Dec 29 00:03:01 UTC 2020] ret='0'
[Tue Dec 29 00:03:01 UTC 2020] Already uptodate!
[Tue Dec 29 00:03:01 UTC 2020] Upgrade success!
[Tue Dec 29 00:03:01 UTC 2020] ret='0'
[Tue Dec 29 00:03:01 UTC 2020] Already uptodate!
[Tue Dec 29 00:03:01 UTC 2020] Upgrade success!
[Tue Dec 29 00:03:01 UTC 2020] Using config home:/acme.sh
[Tue Dec 29 00:03:01 UTC 2020] ACME_DIRECTORY='https://acme-v02.api.letsencrypt.org/directory'
[Tue Dec 29 00:03:01 UTC 2020] Auto upgraded to: 2.8.8
[Tue Dec 29 00:03:01 UTC 2020] Using config home:/acme.sh
[Tue Dec 29 00:03:01 UTC 2020] Using config home:/acme.sh
[Tue Dec 29 00:03:01 UTC 2020] ACME_DIRECTORY='https://acme-v02.api.letsencrypt.org/directory'
[Tue Dec 29 00:03:01 UTC 2020] ACME_DIRECTORY='https://acme-v02.api.letsencrypt.org/directory'
[Tue Dec 29 00:03:01 UTC 2020] _stopRenewOnError
[Tue Dec 29 00:03:01 UTC 2020] Auto upgraded to: 2.8.8
[Tue Dec 29 00:03:01 UTC 2020] _set_level='2'
[Tue Dec 29 00:03:01 UTC 2020] [Tue Dec 29 00:03:01 UTC 2020] di='/acme.sh/bonf.fr/'Using config home:/acme.sh

Et là aussi, pourquoi les enregistrements sont doublés ? Mystère

Bref, tout n'est pas encore clair pour ce qui me concerne.

Posté(e)

Ouai mais c’est déjà toi qui avait eu une disparition, suite logique au finale ^^’

Par contre je vois pas pourquoi...

SAVED_SYNO_Username='xxxx' SAVED_SYNO_Password='xxxxxxxxxxxxxxx' SAVED_SYNO_DID=''

variable stocker en clair ? (J’ai pas regarder le script de déploiement)

si oui même pas la peine de les mettrent en variable, autant les mettre direct dans le config ^^

Posté(e)

Non, ce n'est pas à cause du problème rencontré il y a quelques jours puisque le renouvellement s'est fait hier soir dans les mêmes conditions que lors de l'échec. Je pense que c'est à cause des anciens enregistrements TXT acme_challenge présents dans ma zone DNS, et encore, je n'en suis pas sûr. Ce qui est questionnable c'est pourquoi le fichier de conf a été quasiment effacé suite à l'échec du renouvellement, et pourquoi après le renouvellement du certificat les premières infos du même fichier de conf ont disparues du nouveau fichier.

Je me demande d'ailleurs si le doublement des renouvellements ne serait pas dû à la présence de ces instructions dans le fichier ndd.conf de départ. Peut-être que le script utilise les infos du certificat lui-même pour lancer le renouvellement et que de les avoir aussi dans le ndd.conf lance une seconde session de renouvellement. Ce qui expliquerait aussi pourquoi ces informations ont été supprimées sur le nouveau fichier ndd.conf. D'ailleurs, il n'y a pas que cette information qui a disparue. Je viens de voir que Le_DeployHook='synology_dsm,' n'est pas dans le nouveau fichier.

Pour vérifier, je vais essayer un truc. Comme le renouvellement de mon second domaine doit se faire cette nuit, je vais supprimer les premières lignes ainsi que celle du Le_DeployHook de son fichier de conf. Je verrai bien si le renouvellement et le déploiement se font quand même sans ces instructions, ce qui confirmerait que les infos sont récupérées ailleurs (peut-être du ndd.csr.conf). Si ça ne fonctionne pas, je pourrai toujours restaurer le fichier d'origine.

Une fois que le renouvellement du deuxième certificat sera fait, je vais tout supprimer et reprendre complètement le tuto avec les dernières modifications.

il y a une heure, Einsteinium a dit :

SAVED_SYNO_Username='xxxx' SAVED_SYNO_Password='xxxxxxxxxxxxxxx' SAVED_SYNO_DID=''

Tu ne voudrais tout de même pas que je divulgue mes paramètres sur le forum ! Si ? 😉

Posté(e)

Donc les informations sont en claires sans être hasher ? Dingue, mais utile alors pour le tutoriel, je vais l’éditer au soir du coup.

moi j’ai eu un échec de renouvellement, mais j’avais à force de refaire le token ovh oublié de mettre en illimité ce dernier, mais je n’ai eu aucun écrasement de config et une fois mis à jour les clés ovh, aucun soucis.

Posté(e)

Au niveau des clés, tout va bien, le fichier account.conf est OK. C'est juste le fichier ndd.conf dans le répertoire du ndd dans lequel des lignes ont été effacées par rapport au fichier d'origine. Les identifiants du compte et le nom du certificat sont toujours OK.

Je verrai demain si le deuxième certificat se renouvèle avec son fichier de conf modifié.

Posté(e)

Je viens de vérifier mon conf de domaine, il a pas bouger depuis le dernier renouvellement du 10 décembre (j'ai mis en place l'update du docker après, donc le problème est pas de la à mon avis...)

J'ai update encore le tutoriel pour le déploiement, @kerod Essaye voir par cette méthode, d'ailleurs la commande de création du certificat, tu as du retirer les accolades ou pas pour la création ? (précise si ssh ou planificateur de tâche, mais je penses que pour la commande de création/déploiement je vais mettre que en ssh, le mode interactive permet d'avoir le retour et donc des erreurs...

Posté(e) (modifié)

@Einsteinium Merci pour ton retour.

J'ai repris le tutoriel et j'ai ajouté les éléments au .conf. 

Plus d'erreur sur l'identifiant et mot de passe, j'ai modifié le port pour qu'il soit celui de mon NAS et j'ai fini par avoir une nouvelle erreur.

J'ai creusé et j'ai trouvé ce qu'il fallait valoriser et ça fonctionne.

Par contre, j'ai un message comme quoi le certificat a été remplacé alors que la date de fin de validité n'a pas bougé. Est-ce normal ?

Modifié par kerod
Plus d'erreur mais une question désormais...

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.