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)
il y a une heure, Einsteinium a dit :

Tu as mis les deux ndd directement sur le même certificat rassure moi ?

Non ! Et ce serait impossible puisque mes deux ndd sont chez 2 provider différents : ovh et gandi

Posté(e) (modifié)

Bonjour les loulous,

Je viens de me rendre compte d'un soucis lors de la phase de renouvellement.
J'ai suivi le tuto le 26/08 en l'appliquant manuellement à la fin.

Voyant la date d'expiration ce rapprocher (à la fin du mois de novembre), je suis allé lire un peu les logs de acme.sh.log

Voilà ce que j'y trouve :

Citation

[Wed Oct 26 00:22:16 UTC 2022] Unable to authenticate to 172.17.0.1:5000 using http.
[Wed Oct 26 00:22:16 UTC 2022] Check your username and password.
[Wed Oct 26 00:22:16 UTC 2022] If two-factor authentication is enabled for the user, set SYNO_TOTP_SECRET.
[Wed Oct 26 00:22:16 UTC 2022] Error deploy for domain:monsuperdomaine.tld
[Wed Oct 26 00:22:16 UTC 2022] Deploy error.
[Wed Oct 26 00:22:16 UTC 2022] Return code: 1
[Wed Oct 26 00:22:16 UTC 2022] Error renew monsuperdomaine.tld.
[Wed Oct 26 00:22:16 UTC 2022] _error_level='1'
[Wed Oct 26 00:22:16 UTC 2022] _set_level='2'
[Wed Oct 26 00:22:16 UTC 2022] The NOTIFY_HOOK is empty, just return.
[Wed Oct 26 00:22:16 UTC 2022] ===End cron===

Une idée ? Merci

Modifié par _DR64_
Posté(e)
Le 11/10/2020 à 12:58, Einsteinium a dit :

2) On ré édite notre fichier "account.conf" créé au point 2B, on y rajoute :

SAVED_SYNO_Scheme='http'
SAVED_SYNO_Hostname='172.17.0.1'
SAVED_SYNO_Port='5000'
SAVED_SYNO_Username='nom utilisateur'
SAVED_SYNO_Password='le password'
SAVED_SYNO_DID=''
SAVED_SYNO_Certificate='description du certificat mise dans le DSM'

C'est pas ici qu'il prend en compte le compte acme et le mot de passe mais dans :
docker/Acme/monsuperdomaine.tld/monsuperdomaine.tld.conf 

Là ça marche.

Citation

root@MONNAS:~# docker exec Acme sh -c "acme.sh --deploy -d 'monsuperdomaine.tld' --deploy-hook synology_dsm"
[Fri Nov  4 06:55:18 UTC 2022] Logging into 172.17.0.1:5000
[Fri Nov  4 06:55:18 UTC 2022] Getting certificates in Synology DSM
[Fri Nov  4 06:55:18 UTC 2022] Generate form POST request
[Fri Nov  4 06:55:18 UTC 2022] Upload certificate to the Synology DSM
[Fri Nov  4 06:56:44 UTC 2022] http services were restarted
[Fri Nov  4 06:56:44 UTC 2022] Success

 

La seule question que je me pose c'est : 
Pourquoi j'ai le certificat de quickconnect activé alors que je n'ai pas activé quickconnect et pourquoi dans mon certificat  principale j'ai dans les "pour" des domaines qui n'existent plus ?
j'avais créé un reverse proxy à l'époque sur ces noms mais là je n'ai plus donc ils ne devraient plus petre cités ?
J'ai même moments ^^

Posté(e)
Il y a 13 heures, _DR64_ a dit :

C'est pas ici qu'il prend en compte le compte acme et le mot de passe mais dans :
docker/Acme/monsuperdomaine.tld/monsuperdomaine.tld.conf 

C’est que tu as mal suivis le tutoriel… car quand tu lances le déploiement vers le nas.. il vient les prendre dans le account pour les mettre dans le conf du domaine.

 

Il y a 13 heures, _DR64_ a dit :

La seule question que je me pose c'est : 
Pourquoi j'ai le certificat de quickconnect activé alors que je n'ai pas activé quickconnect et pourquoi dans mon certificat  principale j'ai dans les "pour" des domaines qui n'existent plus ?
j'avais créé un reverse proxy à l'époque sur ces noms mais là je n'ai plus donc ils ne devraient plus petre cités ?
J'ai même moments ^^

cela n’active pas Quick Connect, donc c’est forcément toi à travers peu être un paquet ? (Souvent l’abus du suivant sans lire)

Tu as fait ses reverse proxy comment ? A travers webstation ?

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

C’est que tu as mal suivis le tutoriel… car quand tu lances le déploiement vers le nas.. il vient les prendre dans le account pour les mettre dans le conf du domaine.

J'ai pourtant fais point par point mais si je suis le seul dans ce cas c'est évidement moi le problème :x

Il y a 9 heures, Einsteinium a dit :

Tu as fait ses reverse proxy comment ? A travers webstation ?

Non par le portail de connexion / avancé / proxy inversé

Posté(e)
Il y a 12 heures, _DR64_ a dit :

J'ai pourtant fais point par point mais si je suis le seul dans ce cas c'est évidement moi le problème :x

Bon bah parfois y a des loupés… pas cherché à comprendre…

Il y a 12 heures, _DR64_ a dit :

Non par le portail de connexion / avancé / proxy inversé

Alors c’est pas normal.. refait les avec des infos bidons et supprime derrière, cela devrait fixé le problème. 

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

Alors c’est pas normal.. refait les avec des infos bidons et supprime derrière, cela devrait fixé le problème. 

ça m'en rajoute un 2nd et quand je le supprime, le 1er reste...
Une idée ?

Pour QuickConnect, je suis tombé sur cette information sur le site de SYNOLOGY :
 

Citation

Remarques :

  1. Pour DSM 7.0 et versions ultérieures, le certificat QuickConnect ne peut pas être supprimé une fois que vous avez activé le service QuickConnect.

Je l'avais activé au tout début donc  je le garde hein ! 😅

Posté(e)

Salut à tous,
Pour le coup j'ai utilisé ce tuto il y aura bientôt 1 an et mon renouvellement ce passe à chaque fois à la perfection. 
Cependant j'aimerais faire évoluer le fonctionnement de mon Nas mais j'ai peur de ce qui pourrait ce passer.

J'aimerais ajouter un deuxième domaine sur mon nas uniquement pour la partie Synology Drive et Plex. Du coup j'ai deux questions dont une qui correspond à ce sujet.

Comment dois-je procéder pour avoir une renouvellement automatique du certificat pour ce nouveau domaine ? 
Puis-je dupliquer ce docker et modifier que quelques lignes ? (oui je sais je rêve)
Le fait qu'actuellement je n'ai qu'un certificat sur mon nas va t'il falloir que je modifier mon premier docker pour qu'il ne modifie pas le mauvais certificat ?

J'espères être clair, et je file ouvrir un nouveau post pour mon autre question qui n'a pas de lien avec le certificat.

Merci pour vos réponses qui me seront précieuses.

Bonne fin de dimanche.

Posté(e)
Le 06/11/2022 à 17:46, Capitaine ad hoc a dit :

J'aimerais ajouter un deuxième domaine sur mon nas uniquement pour la partie Synology Drive et Plex.

Tout dépend d'où provient ce deuxième domaine. Est-ce un domaine issu de votre domaine en place (ce que certains appellent par erreur un sous-domaine) ou bien un nouveau domaine et dans ce cas est-ce chez le même fournisseur (OVH je suppose dans votre cas) ? Si chez le même fournisseur, est-ce que ce nouveau domaine est sur le même compte client que l'ancien ?

Posté(e)

Le plus simple reste de faire un conteneur acme.sh par nom de domaine.
Si on fait de la validation de type DNS-01 évidemment (vérification faite au niveau de la zone DNS), en HTTP-01 on aura un problème de port avec plusieurs conteneurs.

Posté(e) (modifié)
Il y a 3 heures, .Shad. a dit :

Le plus simple reste de faire un conteneur acme.sh par nom de domaine.

Oui si les ndd proviennent du même fournisseur et qu'ils ne sont pas sur le même compte ce qui rend impossible l'utilisation de la même API. Si sur le même compte, on peut avoir une API commune pour tous les ndd du compte ce qui permet de n'avoir qu'un seul docker.

Pas nécessaire lorsqu'ils sont chez deux fournisseurs différents puisque les API sont forcément différentes, elles peuvent être traitées sur un seul et même container.

Pour ma part, j'ai deux ndd, un chez ovh et l'autre chez gandi et une seul container acme.sh pour les deux.

Et pour compléter, j'ai aussi sur un autre site deux ndd chez ovh sur un même compte client, et là aussi, je n'ai qu'un seul container pour les deux avec une API commune.

Modifié par Mic13710
Posté(e) (modifié)

Dans les faits oui ça marche tout aussi bien, mais le jour où je résilie un nom de domaine, j'ai juste à supprimer le conteneur ad hoc au lieu de modifier l'existant.

Puis deux NDD avec les même credentials, c'est donc un token qui donne au minimum accès aux requêtes sur les deux NDD, voir souvent par commodité sur l'ensemble de la zone DNS (*). Moins sécurisé je trouve.

Mais je suis d'accord c'est un détail. 😉 

Modifié par .Shad.
Posté(e) (modifié)

Bonsoir Messieurs, 

@Mic13710 je suis exactement dans la même configuration ! J'ai bien deux domaines (et pas sous domaine) chez OVH avec le même compte client.

Après avoir lu votre échange @Mic13710 et @.Shad. j'avoues que c'est dur de se décider !!! Le côté sécurité laisse personne insensible donc je pencherais pour la méthode de @.Shad. même si comme il le dit c'est un détail. 

Maintenant la méthode de @Mic13710me plaît car n'avoir qu'un conteneur me paraît plus simple à gérer ! 

J'ai donc désormais deux questions :

Si je pars sur le deuxième conteneur je n'ai rien à toucher sur le premier existant ?

Une méthode pour dupliquer le premier et modifier que les strictes différences existe-t-elle ?

Merci à vous tous encore une fois et ah oui ... 

Il y a 14 heures, Mic13710 a dit :

... (OVH je suppose dans votre cas) ? ...

Surtout "tutoyez" moi Messieurs. 

Au plaisir de vous lire. 😉

 

Edit :

Bon j'ai mis en place la solution avec le deuxième docker super simple et ça a l'air super efficace.

Merci encore à vous !

Modifié par Capitaine ad hoc
Ajout d'un deuxième docker, fonctionne parfaitement on dirait.
  • 2 semaines après...
Posté(e)

Bonjour,
Petite question pour toi @Einsteinium

J'ai mon nas DS1813+ avec un certificat Let's encrypt en docker fait suivant ta méthode  ( c'est même toi qui m'a aider à le mettre en place à l’époque 🤩 )

Si je copie tous les sous dossier Acme et Cert du DS1813+ vers mon DS1821+,

Que j’exporte la config du docker et ainsi que les taches cela va fonctionner ?

Posté(e)
Il y a 3 heures, firlin a dit :

Bonjour,
Petite question pour toi @Einsteinium

J'ai mon nas DS1813+ avec un certificat Let's encrypt en docker fait suivant ta méthode  ( c'est même toi qui m'a aider à le mettre en place à l’époque 🤩 )

Si je copie tous les sous dossier Acme et Cert du DS1813+ vers mon DS1821+,

Que j’exporte la config du docker et ainsi que les taches cela va fonctionner ?

Yep sans soucis, juste à redéployer vers le nas une première fois et roulé jeunesse 🙂

Posté(e) (modifié)

Bon je suis repartie de zéro en faisant le jeu des 7 erreurs entre les deux nas et cela le fonctionne pas

J'ai pas les certificats de généré dans le dossier "docker/Acme/votredomaine"

et dans le log j'ai cette erreur qui se repete

Citation

Using config home:/acme.sh
[Tue Dec 13 20:29:56 UTC 2022] default_acme_server='https://acme-v02.api.letsencrypt.org/directory'
[Tue Dec 13 20:29:56 UTC 2022] ACME_DIRECTORY='https://acme-v02.api.letsencrypt.org/directory'
[Tue Dec 13 20:29:56 UTC 2022] DOMAIN_PATH='/acme.sh/XXXXX.ovh'
[Tue Dec 13 20:29:56 UTC 2022] Using ACME_DIRECTORY: https://acme-v02.api.letsencrypt.org/directory
[Tue Dec 13 20:29:56 UTC 2022] _init api for server: https://acme-v02.api.letsencrypt.org/directory
[Tue Dec 13 20:29:56 UTC 2022] GET
[Tue Dec 13 20:29:56 UTC 2022] url='https://acme-v02.api.letsencrypt.org/directory'
[Tue Dec 13 20:29:56 UTC 2022] timeout=
[Tue Dec 13 20:29:56 UTC 2022] _CURL='curl --silent --dump-header /acme.sh/http.header  -L '
[Tue Dec 13 20:30:01 UTC 2022] Please refer to https://curl.haxx.se/libcurl/c/libcurl-errors.html for error code: 6
[Tue Dec 13 20:30:01 UTC 2022] ret='6'
[Tue Dec 13 20:30:01 UTC 2022] Can not init api for: https://acme-v02.api.letsencrypt.org/directory.
[Tue Dec 13 20:30:01 UTC 2022] Sleep 10 and retry.

Comme la dernier fois sauf que la je suis en DSM 7.1.1

Modifié par firlin
Posté(e)

Bonjour à tous,

Tout d'abord, merci pour ce tuto ! Il est top !

Ça a marché du premier en manuel avec mes 2 NAS.

Je souhaites comprendre le fonctionnement et j'avais une question...

Je reçois une notification mail tous les matins à 5h : Le conteneur Docker Acme s'est arrêté de manière inattendue. Accédez à Docker pour plus d'informations. ça m'a interrogé sur le fonctionnement...

On est d'accord que le conteneur fonctionne comme une application qui s'active tous les matins à 5h le script vérifie si le certificat en cours est toujours bon si non, ça le renouvelle ? J'ai bien compris ?

[Fri Dec 16 00:57:01 UTC 2022] Skip, Next renewal time is: 2023-01-30T19:58:16Z
[Fri Dec 16 00:57:01 UTC 2022] Add '--force' to force to renew.
[Fri Dec 16 00:57:01 UTC 2022] Return code: 2
[Fri Dec 16 00:57:01 UTC 2022] Skipped ndd.fr
[Fri Dec 16 00:57:01 UTC 2022] _error_level='3'
[Fri Dec 16 00:57:01 UTC 2022] _set_level='2'
[Fri Dec 16 00:57:01 UTC 2022] ===End cron===

Merci d'avance pour l'éclairage de lanterne

Posté(e)
Il y a 10 heures, Riddox a dit :

Je reçois une notification mail tous les matins à 5h : Le conteneur Docker Acme s'est arrêté de manière inattendue. Accédez à Docker pour plus d'informations. ça m'a interrogé sur le fonctionnement...

Non c’est pour le renouvellement de l’image docker, une alternative à watchtower, afin d’être sûr qu’elle soit à jour 🙂

Cette alerte mail arrive quand on stop manuellement un docker fait ailleurs que dans la version graphique, mais cela ne pop que la première fois normalement, après recréation elle n’a plus lieu d’être…

Concernant la vérification du certificat elle se fait à 1h utc, soit 2h chez nous.

Posté(e) (modifié)

Bonjour à tous,

Je me permets de poster ici mon retour d'expérience sur ce tuto.

Voici ce que je crois comprendre

  • On utilise Docker pour faire tourner en continue une image : en gros cela sert à faire tourner un programme (l'image) en s'affranchissant de l'environnement (notamment des différentes versions de DSM).
  • L'image que l'on va exécuter va utiliser le protocole ACME et une API avec notre registrar (ici OVH) pour gérer notre certificat. 
  • L'exécution quotidienne (ici à 5h00) d'une tache va permettre de d'éteindre le docker contenant l'image ACME, de télécharger la dernière version puis de redémarrer le conteneur.
  • On va ensuite initialiser le processus en (i) créant un certificat puis (ii) en le déployant. Ces deux opérations sont faites via du code SSH ou de façon équivalente en lançant ponctuellement une tache qui contient ce code via l'utilisateur root.  
  • Le nombre de création de certificat est limité par période de 7 jours glissants et les certificats ont une durée de vie de 3 mois.

Est-ce correct ?

Voici mes questions

  • Est-ce que c'est l'image ACME qui qui se charge de vérifier la date d'expiration du certificat ?
  • Est-ce que c'est l'image ACME qui qui se charge, en plus de créer un nouveau certificat, de le déployer ?

Bug #1

  • Comme @Riddox je reçois à chaque exécution de ma tache quotidienne un message qui m'indique que "le conteneur Docker Acme s'est arrêté de manière inattendue".

Savez-vous comment résoudre ce problème ?

Bug #2

  • Comme @oracle7 (i) mon fichier header reste vide et (ii) mon déploiement automatique via la tache ne semble pas fonctionner. Voici ce que j'ai dans mes logs :
[Mon Dec 19 15:26:54 UTC 2022] Running cmd: deploy
[Mon Dec 19 15:26:54 UTC 2022] Using config home:/acme.sh
[Mon Dec 19 15:26:54 UTC 2022] default_acme_server='https://acme-v02.api.letsencrypt.org/directory'
[Mon Dec 19 15:26:54 UTC 2022] ACME_DIRECTORY='https://acme-v02.api.letsencrypt.org/directory'
[Mon Dec 19 15:26:54 UTC 2022] DOMAIN_PATH='/acme.sh/ndd.tld'
[Mon Dec 19 15:26:54 UTC 2022] _deployApi='/root/.acme.sh/deploy/synology_dsm.sh'
[Mon Dec 19 15:26:54 UTC 2022] _cdomain='ndd.tld'
[Mon Dec 19 15:26:54 UTC 2022] SYNO_Certificate='ACMEWilcardndd.tld'
[Mon Dec 19 15:26:54 UTC 2022] _base_url='http://---.---.--.--:5000'
[Mon Dec 19 15:26:54 UTC 2022] Getting API version
[Mon Dec 19 15:26:54 UTC 2022] GET
[Mon Dec 19 15:26:54 UTC 2022] url='http://---.---.--.--:5000/webapi/query.cgi?api=SYNO.API.Info&version=1&method=query&query=SYNO.API.Auth'
[Mon Dec 19 15:26:54 UTC 2022] timeout=
[Mon Dec 19 15:26:54 UTC 2022] _CURL='curl --silent --dump-header /acme.sh/http.header  -L '
[Mon Dec 19 15:29:02 UTC 2022] Please refer to https://curl.haxx.se/libcurl/c/libcurl-errors.html for error code: 28
[Mon Dec 19 15:29:02 UTC 2022] ret='28'
[Mon Dec 19 15:29:02 UTC 2022] Logging into ---.---.--.--:5000
[Mon Dec 19 15:29:02 UTC 2022] POST
[Mon Dec 19 15:29:02 UTC 2022] _post_url='http://---.---.--.--:5000/webapi/auth.cgi?enable_syno_token=yes'
[Mon Dec 19 15:29:02 UTC 2022] _CURL='curl --silent --dump-header /acme.sh/http.header  -L '

Selon cette page mon erreur (28) est une erreur de time out.

Savez-vous comment résoudre ce problème ?

Merci d'avance,

Modifié par TuringFan
Posté(e)

Bonjour à tous et .. à l'aiiiiiide .. 

 

je suis bine moins expert que presque tout ce que je lis ici .. J'ai suivi une première fois le tuto à la lettre (sauf le point CBis car il me semble comprendre que ce n'est qu'une information et donc rien ç faire, mais peut-être je me trompe).

La première fois cela avait marché. j'avais bien mes certificats de créer. les 3 fichiers (6 dans le dossier de mon ndd. 

Le problème est que à chaque connexion sur mon NAS cela me mettait non sécurisée (interne et externe, tout le temps quoi). 

Je me suis dit (bêtement surement) que cela était parce que j'avais mis ndd.com en ndd et non dynhost.ndd.com comme il est précisé dans ma connexion externe. (fait en suivant le tuto de ce site). 

Je recommence donc avec dynhost.ndd.com et depuis c'est la m* Cela ne marche plus. En fait cela me créé bien le répertoire dynhost.ndd.com, mais je n'ai que 4 fichiers, et il m'en manque donc 2 pour avoir mon certificat complet.

Le dossier acme-v02.api etc .. est bien créer avec 3 fichier dans le directory.

 

En image ...

 

J'avoue être perdu ... 

Merci par avance.

 

Catolard

Capture d’écran 2022-12-25 à 11.04.08.png

Capture d’écran 2022-12-25 à 11.04.50.png

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.