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) (modifié)

pour le pare feu, tu aurais pas bloqué les USA par hasard ? Sinon, c'est que tu as oublié le pramètre --dns dns_ovh lors dans demande de certificat, dans ce cas le comportement par défaut d'acme est une vérification HTTP-01, la même que celle de DSM et qui nécessite donc l'ouverture des ports 80 et 443 (si c'est ça ils sont donc aussi ouverts sur ton routeur !!)...

sinon saute l'étape 3A, j'ai pas trop compris pourquoi le tuto réclame ça.  @Einsteinium te rappelles-tu ce qui t'avais amené à passer par un import manuel ? ca m'intéresse 😛 

edit: j'ai relu le début du thread, c'est pour forcer tous les services internes du dsm a s'attacher du cert ? moi comme j'utilise un SAVED_SYNO_Certificate='' vide, ca remplace le cert par défaut, qui est seul et utilisé pour tout chez moi, pas besoin d'import donc 😄 

 

Donc @axb, dans ton account.conf tu dois avoir ceci
 

SAVED_SYNO_Scheme='http'
SAVED_SYNO_Hostname='172.17.0.1'
SAVED_SYNO_Port='ton port'
SAVED_SYNO_Username='username'
SAVED_SYNO_Password='username_password'
SAVED_SYNO_Certificate=''

http et non https (inutile de faire du https car tu reste sur la même machine) à priori déjà OK d'apres ton log

l'ip doit rester a 172.17.0.1 (et non pas l'ip locale de ton nas comme dans ton log)

le port lui doit bien être le port HTTP de ton dsm (64.... d'après ton log)

le SAVED_SYNO_DID pas la peine de le mettre, ca sert a rien si t'as pas la double auth (qui est de façon inutile si t'as bien restreint les droits de ton SAVED_SYNO_Username au strict minimum et bien activé fail2ban (protection de compte compte dans les options dsm). 

SAVED_SYNO_Certificate='' doit donc rester vide pour te dispenser du step 3A, ca remplacera le cert par défaut directement

il faut aussi que tu edites le fichier /docker/Acme/domain.tld/domain.tld.conf et que tu supprimes (on remplace, au choix) les lignes SAVED_SYNO_xxx pour que acme prenne en compte tes modifs du account.conf

enfin tu lance en ssh root ou par tache exec unique root :

docker exec Acme --deploy -d domain.tld --deploy-hook synology_dsm

si tout est OK tu dois voir

[Fri Jul 23 20:22:38 UTC 2021] Logging into 172.17.0.1:tonport
[Fri Jul 23 20:22:38 UTC 2021] Getting certificates in Synology DSM
[Fri Jul 23 20:22:38 UTC 2021] Generate form POST request
[Fri Jul 23 20:22:38 UTC 2021] Upload certificate to the Synology DSM
[Fri Jul 23 20:22:42 UTC 2021] http services were restarted
[Fri Jul 23 20:22:42 UTC 2021] Success

le "http services were restarted" est important, c'est ce qui confirme que les serveurs web du dsm ont bien pris en compte le nouveau certificat (on aura un "not restarted" si on ne fait que rajouter / remplacer un certificat non-défaut).

En dernière vérif: refresh la page web dsm (relance ton navigateur au besoin pour forcer le refresh) et dans le cadenas à coté de l'url, regardes les propriétés du cert, tu devrais bien avoir ton wildcard dans details / subject alternative name

vala 🙂

Modifié par Ivanovitch
Posté(e)

Bonjour à tous,

Merci @Einsteinium pour ce tuto effectivement rapide à déployer.  De mon côté aucun problème pour obtenir le certificat LE, et ce sans anicroche du côté d'OVH, le process a été rapide.

J'ai suivi ensuite le Tuto (conversion des fichiers du certificats, placés dans un répertoire \volume1\Docker_Certs et ensuite import manuel dans DSM 7 via l'interface. Certificat déclaré par défaut et services configurés, le serveur web a redémarré et le certificat mis en service correctement. J'ai alors supprimé les autres certificats.

Le fichier account.conf est complet avec l'item SAVED_SYNO_Certificate='Docker-Acme-WildcardLE', sans double authentificateur (utilisateur dédié sans droits créé)

Les choses se compliquent lorsque je passe la commande docker exec Acme sh -c "acme.sh --deploy -d 'mondomaine.tld' --deploy-hook synology_dsm" qui me renvoie:

Logging into 172.17.0.1:5000
Getting certificates in Synology DSM
Unable to find certificate: Docker-Acme-WildcardLE and $SYNO_Create is not set
Error deploy for domain:mondomaine.tld
Deploy error.

J'ai alors ajouté une ligne SYNO_Create='1' dans account.conf, repassé la commande exec Acme sh -c "acme.sh --deploy -d 'mondomaine.tld' --deploy-hook synology_dsm" qui me renvoie alors:

Logging into 172.17.0.1:5000
Getting certificates in Synology DSM
Generate form POST request
Upload certificate to the Synology DSM
Unable to update certificate, error code {"error":{"code":119},"success":false}
Error deploy for domain:mondomaine.tld
Deploy error.

Dans github docker acme sh je n'ai pas trouvé la signification du code erreur 119.

Je serai heureux d'obtenir un petit coup de pouce.

Merci

Audio

 

Posté(e) (modifié)

 

Il y a 8 heures, Audio a dit :

De mon côté aucun problème pour obtenir le certificat LE, et ce sans anicroche du côté d'OVH

 

 

je sais pas si on parle de la même chose, mais pour les soucis ovh évoqués les pages d'avant, mon bugfix a été mergé dans le master acme (et donc le docker) il y a 4 jours donc normal 😜  !

 

Il y a 8 heures, Audio a dit :

J'ai alors supprimé les autres certificats.

...


Unable to find certificate: Docker-Acme-WildcardLE

 

quand tu dit "supprimé les autres certificats", tu veux dire que tu as suppr les certs générés par acme et gardé que ceux en convertis par openssl ? si oui c'est normal qu'il arrive pas a les déployer, il veux utiliser ceux qu'il a généré lui 😜!

t'es bon pour redemander un nouveau cert et refaire le deploy (à priori pas besoin de passer par l'étape conversion + import manuel cette fois ! )

 

 

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

sinon, pour les histoires de pare-feu (à priori ce que axb rencontrait comme problème un peu au dessus)

il faut au moins ouvrir le port 443 du pare-feu du synology (pas celui de la box !) pour les conteneurs dockers en bridge (c'est le cas dans ce tuto) ! Ils sont considérés comme externes d'un point de vue de dsm (7) et de son PF.

en mode parano on ouvrirai uniquement pour l'ip du docker acme le 443 en destination tcp (mais elle peux changer si j'ai bien compris docker, donc pas génial) ou, moins parano toutes les IP du bridge0 docker ( 172.17.0.0/16 ).

pour le deploy il faut aussi ouvrir le port http dsm (encore une fois, que du syno, pas nécessaire sur la box)

Mais mieux encore, et a moins que vous ne fassiez pas confiance à votre propre lan, autorisez tout pour les plages d'ip locales de la rfc1918, c'est à dire en toutes premières règles du pf, autoriser tout pour les 10.0.0.0/8, 172.16.0.0/12 (qui intègre donc le 172.17.0.0/16) et 192.168.0.0/16.

C'est ce qui est décrit dans tuto de Fenrir sur la sécurisation du nas partie config du PF 🙂 

s03.png

edit: pour ceux qui utilisent le serveur dns du syno, il faut aussi ouvrir le port de celui ci (53)

Modifié par Ivanovitch
Posté(e)

Merci @Ivanovitch,

Pour la partie OVH je parlais bien de la même chose, donc ton bugfix est efficace.

Pour le déploiement du certificat, j'ai importé les manuellement les 3 fichiers .pem après conversion par l'interface DSM. Le certificat ainsi importé n'avait pas de description dans DSM je lui en ai donné une 'Docker-Acme-WildcardLE'.

Il restait une certificat plus ancien généré également par Acme qu j'ai effectivement supprimé pour bien laisser qu'un seul certificat par défaut.

Je vais tenter de régénérer un nouveau certificat et passer au déploiement sans passer par la conversion+import manuel.

Je reviendrais vers le forum pour dire comment ça s'est passé.

Posté(e)

Bonjour,

Comme dit dans mon dernier post je reviens après avoir suivi les conseils d' @Ivanovitch . Après régénération sans pb d'un certificat LE j'ai essayé de le déployer mais les réponses sont toujours les mêmes. (Voir mon premier post.)

J'ai donc tout désinstallé et tout réinstallé depuis le début avec le Tuto, y compris Docker en préalable. J'ai importé dans DSM manuellement le dernier certificat généré avec Acme en le déclarant certificat par défaut (il est fonctionnel le server Web a redémarré) mais sans lui mettre de description.

Après ré-installation de Docker et du conteneur Acme, régénération d'un nouveau certificat ==> OK

Tentatives de déploiement ==> NOK que ce soit:

1 )en mode "remplacement du certificat par défaut" avec la variable SAVED_SYNO_Certificate='' (pas de description de certificat) ==> Réponse:Unable to find certificate:  and $SYNO_Create is not set

2)en mode ajout d'un certificat avec SAVED_SYNO_Create='1' et SAVED_SYNO_Certificate='ACME-LE'. Réponse: Unable to update certificate, error code {"error":{"code":105},"success":false}

Je m'arrête là pour ce script, je n'utiliserai que la partie correspondante au renouvellement du certificat qui semble très bien fonctionner. Pour la partie déploiement du certificat je la laisse de côté et déploierai manuellement les certificats obtenus par l'interface de DSM. De toute manière je le fais déjà pour 2 autres NAS.

A bientôt

Audio

 

 

Posté(e)
Il y a 4 heures, Audio a dit :

Je m'arrête là pour ce script, je n'utiliserai que la partie correspondante au renouvellement du certificat qui semble très bien fonctionner. Pour la partie déploiement du certificat je la laisse de côté et déploierai manuellement les certificats obtenus par l'interface de DSM. De toute manière je le fais déjà pour 2 autres NAS.

Bonsoir,

En fin de compte je ne me suis pas arrêté. J'ai modifié le account.conf avec un LOG_LEVEL=3 et refait des tentatives de déploiement dans les 2 modes, à savoir remplacement du certificat par défaut-sans description et ajout d'un nouveau certificat avec SAVED_SYNO_Create='1' et SAVED_SYNO_Certificate='ACME-LE'.

Pour la seconde méthode je trouve dans le log "response='{"error":{"code":105},"success":false}'" lorsque le process veut uploader les différentes parties du certificat. En recherchant ce code erreur je suis tombé sur une explication de l'API Synology disant que cette erreur provient d'une insuffisance de privilèges.

Donc un coup d'oeil aux caractéristiques du compte utilisé pour le déploiement (utilisateur dédié sans droits d'application etc." pour m'apercevoir qu'il n'est ni dans le groupe administrators ni dans le groupe http.

D'où corrections et ....MIRACLE 🤩, le certificat s'importe tout de suite par la méthode ajout de certificat et apparait dans DSM avec la description 'ACME-LE'. Il n'est bien sûr pas positionné 'par défaut' et le serveur web n'a pas été redémarrer. Il suffira que je configure manuellement les services et le déclare par défaut et il sera positionné correctement.

Merci encore @Einsteinium pour le tuto et @Ivanovitch pour l'aide.

Cordialement, Audio

  • 3 semaines après...
Posté(e)

Cette nuit, premier renouvellement automatique du certificat.

Tout s'est passé sans problème :Yes:

Solution sans doute plus simple que celle proposée par Oracle7 !!!

Merci @Einsteinium pour le tuto ...

Prochaine étape : passer en DSM7 et vérifier que tout fonctionne encore bien. Rendez vous dans deux mois ...

Posté(e)
il y a 39 minutes, Kramlech a dit :

Solution sans doute plus simple que celle proposée par Oracle7 !!!

C'est un peu du bashing, non ?

Ca en devient gênant à force.

  • 2 semaines après...
Posté(e) (modifié)

Merci pour le tuto, que je viens de mettre en place.

Il m'a fallu m'y reprendre à plusieurs fois, et j'ai été bloqué à deux stades.

a) quand il a fallu créer un admin, sans accès particulier : j'avais constamment des erreurs d'authentification en lancant les instructions en ssh

Après avoir parcouru les posts (page 6 je pense) j'ai compris que c'était un problème de double authentification qu'il faillait désactiver

b) une fois le certificats crée, impossible de l'importer (fichers pem et autres) : le DSM me donnait une erreur d'accès aux fichiers, impossible d'importer et peu importe où je les copiais au préalable.

A force, j'ai fait un import sur un autre syno et cela marchait (l'import en tout cas). J'ai redémarré le syno et cela fonctionne, de sorte que je n'ai jamais compris d'où venait le problème.

Donc il m'a fallu, en gros une journée...

Et j'ai refait le tuto à distance, sur un autre de mes syno à l'étranger, et en 15 minutes, c'était plié.

J'ai mis un rappel à l'agenda pour dans 2 mois...

Merci  à tous

PS : petite question : le répertoire DOSSIEREXPORT , il ne sert que pour le déploiement manuel ou également lors du renouvellement des certificats ? 

Modifié par nostra_damus
Posté(e)

Bonjour @Einsteinium,

j'ai tenté d'utiliser le script python pour le renouvellement de mon certificat, mais ça s'est soldé par un échec à chaque fois. Ayant entre temps basculé sur DSM 7, j'ai donc décidé de basculer sur la méthode par docker. J'ai sauté le pas ce jour. Il m'a fallu environ 3 heures pour arriver au bout du tuto. En effet, j'ai buté longtemps sur deux points :

  1. Lors de l'édition du fichier account.conf : malgré le fait de l'avoir créé dans notepad++, les sauts de ligne n'étaient pas correctement codés, générant des erreurs de création de certificats chez OVH. Le symptôme était ce message d'erreur :
    image.png.dc50992c26799c676cd6c8fedd83f485.png
    Les lignes en question étant les lignes ne comportant qu'un saut de ligne.
     
  2. J'ai aussi rencontré beaucoup de difficultés pour résoudre les problèmes d'identification lors du lancement de la commande suivante :
    docker exec Acme sh -c "acme.sh --deploy -d 'mydomain.com' --deploy-hook synology_dsm"

    En effet, il a fallu que je m'y reprenne à plusieurs fois pour effectivement supprimer la vérification en 2 étapes pour le compte que j'ai créé spécialement pour le renouvellement.

Maintenant, je me pose des questions pour l'automatisation du certificat. Si je comprends bien le tuto, il faut créer deux taches :

  1. Une pour la création du conteneur : point 2.C
  2. Une pour le renouvellement du certificat : point 2.D

Mais à quelle fréquence faut-il les déclencher dans le planificateur ? Tous les jours, tous les mois ?

En tout cas, merci pour le boulot !

Posté(e)

Pour le premier point que tu évoques, il y a l’éditeur graphique directement sous dsm qui évite ce type de déconvenue, pour le second effectivement je l’indique aussi 🙂

la création du docker, c’est la création après on la refait pas, par contre le renouvellement lui… bah l’idéal une fois tous les 2 mois c’est suffisant.

Posté(e)

Pour ma part j’utilise ce type de script pour tous mes dockers avec une exécution une fois par jour pour les importants et une fois par semaine pour les secondaires, j’ai mis celui ci dans l’exécution hebdomadaire pour ma part, après c’est à la convenance de chacun

  • 3 semaines après...
Posté(e)

Salut 🙂 

mon certificat wildcards se renouvelle bien pas de soucis 🙂

Par contre, je n'ai aucune notification comme quoi il s'est renouvelé, et le log d'exécution de la commande hebdomadaire n'est pas super clair pour moi XD

J'ai pourtant bien mis mon adresse email dans le account.conf, je pensais que je recevrais ensuite des petits emails de notification 😄 mais non 😅

C'est pas très grave car le certificat est bien mis à jour ^^

Posté(e)

Ma méthode utilise iffft, si tu utilises l’application (moi je fais clignoter une lampe quand on sonne chez moi, utile si casque sur les oreilles ^^), je reçois une notification push quand il y a renouvellement, je donnerais la procédure le cas échéant.

Posté(e)

@MilesTEG1

Bonjour,

Il y a 5 heures, MilesTEG1 a dit :

J'ai pourtant bien mis mon adresse email dans le account.conf, je pensais que je recevrais ensuite des petits emails de notification

Tu as bien saisi cette @mail entre simples quotes ?

Perso, je reçois bien les mails de renouvellement d'acme.sh donc tu dois avoir un Pb ailleurs ...

Cordialement

oracle7😉

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.