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

Depuis le passage à la version 7.2 de DSM, je n'arrive plus à ajouter de certificat. 

Je renseigne la clé, le certificat et le certificat intermédiaire (Etape 3A) mais en cliquant sur OK rien ne se passe ( meme pas de message d'erreur). 

Pour info, j'ai deja utilisé le tutoriel pour la mise en place d'un certificat sur la 7.1 sans problème !

Des solutions svp ?

Modifié par ch82
Posté(e)
Le 26/05/2023 à 11:54, Mic13710 a dit :

@Pommefrais3 l'Ip dans l'account.conf n'est pas correcte. Elle devrait être celle de docker 172.17.0.1.

Je suppose que le port 5050 est le http de DSM. Sinon il faut le changer.

Supprimer le Saved_Syno_Certificate (il ne fallait pas copier exactement ce qui est écrit dans le tuto mais mettre le nom qui est donné au certificat dans DSM). De toute façon, il fait doublon avec celui en base64 qui est dans le ndd.conf

Petit retour d'expérience, c'était bien ça la solution, le renouvellement s'est fait correctement cette nuit !

Merci encore. 

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

Bonjour,
J'ai un nom de domaine domaine.tld lié à un hébergement chez ovh et j'ai défini dans la zone dns d'ovh un sous-domaine maison.domaine.tld qui pointe sur mon NAS.
J'arrive à faire un certificat avec le wildcare pour *.domaine.tld, je pensais qu'il couvrirait tous les sous-domaines mais j'ai découvert que le wildcare ne fonctionne que pour un seul sous-niveau... 
Cela veut dire que mes domaines dans mon reverse proxy du NAS :
 - video.maison.domaine.tld 
 - audio.maison.domaine.tld 
 - etc.
apparaissent comme non sécurisés...
Donc j'ai suivi à nouveau la procédure depuis le début pour mon domaine maison.domaine.tld et son wildcare associé *.maison.domaine.tld mais le script me renvoit toujours l'erreur suivante :


[Fri Aug  4 14:32:45 UTC 2023] invalid domain
[Fri Aug  4 14:32:45 UTC 2023] Error add txt for domain:_acme-challenge.maison.domaine.tld
[Fri Aug  4 14:32:45 UTC 2023] _on_issue_err
[Fri Aug  4 14:32:45 UTC 2023] Please check log file for more details: /acme.sh/acme.sh.log


Pouvez-vous m'indiquer s'il existe une limitation côté ovh ? ou si je dois exploiter le service dns de mon NAS ?
Merci pour votre assistance.

Posté(e)

@simencourt si les domaines n'existent pas, il y a peu de chance que ça fonctionne. Chez OVH il faut deux enregistrements

Si vous avez une IP fixe, un enregistrement A (et/ou AAAA si IPV6) maison.domaine.tld qui pointe vers votre IP fixe

Si vous avez une IP dynamique, un DynHost de maison.domaine.tld qui est synchronisé sur votre IP dynamique (il faudra si besoin modifier le DDNS du NAS)

Et un enregistrement CNAME *.maison.domaine.tld dont la cible est maison.domaine.tld.

Pour que le script de création, il faut bien entendu que les clés API donnent accès à ces domaines.

Posté(e)

Merci pour ce retour @Mic13710, comme je coche toutes les cases :

  • Enregistrement A avec mon IP fixe V4 vers mon domaine maison.domaine.tld
  • Enregistrement CNAME pour le *.maison.domaine.tld

Je vais donc regénérer des clés API et refaire la procédure. A ce propos, il est indiqué https://api.ovh.com pour générer les clés et sur leur espace d'aide, il est indiqué : https://eu.api.ovh.com/. Est-ce que cela a une incidence ?

Posté(e)

Je m'autoréponds pour les API, ça renvoie vers https://api.ovh.com.

Par contre j'ai refait la procédure de zéro, ça ne fonctionne pas et j'ai les logs suivants :

[Fri Aug 11 20:26:51 UTC 2023] Using CA: https://acme-v02.api.letsencrypt.org/directory
[Fri Aug 11 20:26:51 UTC 2023] Multi domain='DNS:maison.domaine.tld,DNS:*.maison.domaine.tld'
[Fri Aug 11 20:26:51 UTC 2023] Getting domain auth token for each domain
[Fri Aug 11 20:26:54 UTC 2023] Getting webroot for domain='maison.domaine.tld'
[Fri Aug 11 20:26:54 UTC 2023] Getting webroot for domain='*.maison.domaine.tld'
[Fri Aug 11 20:26:54 UTC 2023] Adding txt value: iY_YRRn_Vh6uyXxLCb_CWc4-_oQwmG1qUsXDGdvI4wc for domain:  _acme-challenge.maison.domaine.tld
[Fri Aug 11 20:26:54 UTC 2023] Using OVH endpoint: ovh-eu
[Fri Aug 11 20:26:54 UTC 2023] Checking authentication
[Fri Aug 11 20:26:55 UTC 2023] Consumer key is ok.
[Fri Aug 11 20:26:57 UTC 2023] invalid domain
[Fri Aug 11 20:26:57 UTC 2023] Error add txt for domain:_acme-challenge.maison.domaine.tld
[Fri Aug 11 20:26:57 UTC 2023] Please check log file for more details: /acme.sh/acme.sh.log

J'en mets un peu plus si ça peu éclairer quelqu'un... je ne comprends pas pourquoi j'ai le "invalid domain".

Merci.

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

Soit vous avez un souci d'API, soit une erreur dans vos saisies.

Bonjour,

C'était bien un souci d'API... Je créais des clés pour maison.domaine.tld au lieu de domaine.tld... d'où le "invalid domain".

Merci pour votre assistance.

Posté(e)

Bonjour,

J'ai un problème.

J'essaye d'installer mon certificat via la méthode expliquée mais rien ne se passe 😞

Voici ce que j'ai fait :

J'ai un dossier appelé 'Docker' qui a été créé par le paquet 'Contain manager'

Manuellement, dans ce dossier, j'ai créé le dossier 'Acme'.  Dans ce dossier, j'y ai mis les fichier account.conf et 'docker-compose.yml'.  Ces 2 fichiers ont été créés via TextEdit.

J'ai créé une tâche comme expliqué dans le tuto.

Après avoir fait tout cela, j'ai créé une tâche unique pour le certificat avec cette commande :

./acme.sh --issue --keylength 4096 --dns dns_infomaniak -d ndd.tld -d *.ndd.tld

Que dois-je faire pour résoudre mon problème ?

Je précise que je débute avec Docker.  J'ai bien lu le tuto mais cela s'arrête là.

Merci pour votre aide.

account.conf.txt docker-compose.yml

Posté(e)

@Pinpon_112,
as tu installé portainer et watchtower ?

Chez infomaniak, tu as pas de variable de ce type lors de la création de ton domaine ?

Citation
SAVED_OVH_AK='XXXXXXX'
SAVED_OVH_AS='XXXXXXX'
SAVED_OVH_CK='XXXXXXX'

 

Posté(e) (modifié)

@firlin,

Non, je n'ai pas installé portainer et watchtower.  Je n'ai pas vu dans le tuto qu'il fallait les installer.

Concernant Infomaniak, il n'y a que le token à renseigner.  J'avais réussi avec le tuto d'oracle7 avec Acme sur mon ancien NAS qui ne pouvait utiliser docker.  Je ne dois renseigner que ce que j'ai mis dans ma demande.

Edit :

J'ai trouvé le portainer mais il y a plein de watchtower.  Lequel faut-il installer ?

Modifié par Pinpon_112
  • 2 semaines après...
Posté(e)

@Einsteinium

Renouvellement de mes certificats ce matin sur mon 220+. Plus de problème avec le nom du certificat en base 64 comme ce fut le cas ces derniers mois. Ce problème semble résolu avec la dernière version d'acme.

Par contre, apparition de deux nouvelles lignes dans les conf de mes domaines :

SAVED_SYNO_Device_Name='CertRenewal'
SAVED_SYNO_Device_ID='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

Bien que ce soit le même Syno, le SAVED_SYNO_Device_ID n'est pas le même pour les deux conf. Cet identifiant n'a probablement rien à voir avec le NAS lui même. Par contre, je ne vois pas vraiment son utilité.

Même constat sur mon 718+ qui a été renouvelé voici quelques jours.

As-tu une idée ?

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

Bonjour à tous,

Un peu novice en la matière, je ne maitrise pas très bien tout cela. J'ai parcouru les 26 pages de commentaires mais ma question n'y est pas. (j'ai néanmoins vu certains effectuer la manip pour 2 ndd donc faisable à priori) 

J'ai suivi ce tuto pour mon serveur (un DS218+) qui fonctionne très bien [jusqu'au 3a) pour ma part !].

Mon beau-frère dispose d'un DS218J (et donc non compatible docker). J'aimerai pouvoir lui créer ses certificats facilement depuis mon serveur et lui donner l'accès au dossier avec les fichiers de son ndd.key, ndd.cer etc.. qu'il pourra récupérer et insérer dans son syno tout simplement. S'il change de syno à l'avenir, je lui conseillerai un compatible docker pour que ce soit beaucoup plus simple !

Néanmoins, je ne sais pas comment m'y prendre pour différentier les deux acme de mon côté et éviter de créer un conflit sur mon syno.

Est-il possible de m'aiguiller et me donner un petit coup de main ?

En vous remerciant par avance 🙂

Posté(e)

J'avais également vu ce tuto pour les non docker, que je ne trouve absolument pas compréhensible et simple pour les non adeptes et initiés que nous sommes.

Qu'est ce que tu appelles "registar" ?

Mon ndd est chez OVH dans lequel j'ai suivi le tuto pour obtenir mes clés. Son ndd est également chez OVH, et j'ai également la possibilité d'obtenir les clés le concernant.

Pour créer une deuxième instance ACME, suffit-il donc que je crée un second dossier "ACME ndd2" dans docker et que je reprenne le tuto en remplaçant par ACME ndd2 partout ?

Posté(e)

@Torvic-Gall Tout d'abord, merci de ne pas citer inutilement le post précédent. Ca n'apporte rien de plus à la compréhension. Tout au plus, faite une citation du passage auquel vous répondez.

Régistar c'est un fournisseur de ndd.

il y a 19 minutes, Torvic-Gall a dit :

que je ne trouve absolument pas compréhensible et simple pour les non adeptes et initiés que nous sommes.

Il n'est pas plus compliqué que celui-ci. Comme je l'ai dit, la méthode est la même. L'obtention des clés, la création du certificat ainsi que le déploiement sont  similaires et les instructions itou. C'est juste leur emplacement et le lancement qui sont différents.

Comme je suis dans un bon jour, voici un petit tuto que je m'étais fait à partir du tuto de Neilpang :

Création du certificat Let’s Encrypt par la méthode acme.sh

Installation de acme.sh

Via putty  en root :

sudo su

$ cd ~

$ wget https://github.com/acmesh-official/acme.sh/archive/master.tar.gz

$ tar xvf master.tar.gz

$ cd acme.sh-master/

$ ./acme.sh --install --nocron --home /usr/local/share/acme.sh --accountemail "email@gmailcom"

$ source ~/.profile

 

Création du certificat pour ndd (OVH)

On exporte les clés de l’API précédemment créée par :

https://api.ovh.com/createToken/?GET=/domain/zone/mydomain.com/*&POST=/domain/zone/mydomain.com/*&PUT=/domain/zone/mydomain.com/*&GET=/domain/zone/mydomain.com&DELETE=/domain/zone/mydomain.com/record/*

 

export OVH_AK= "your application key"

export OVH_AS= "your application secret"

export OVH_CK= ”your consumer key”

 

génération du certificat :

cd /usr/local/share/acme.sh

./acme.sh --issue --keylength 4096 -d ‘ndd’ –d ‘*.ndd’ --dns dns_ovh

 

Une fois le certificat créé, il faut l’importer dans DSM. Pour cela, via WinSCP en root, on va dans /usr/local/share/acme.sh/ndd et on copie dans un dossier du PC ndd.cer, ndd.key et ca.cer

 

Dans l’onglet certificat de DSM, on crée un nouveau certificat qu’on nomme par exemple « Wildcard ndd» dans lequel on importe les 3 fichiers du certificat et on valide.

 Le certificat créé dans DSM, il faut maintenant lui attribuer les services qui y seront rattachés (cad, tous ceux utilisant le certificat LE ndd). Bouton Configurer.

On désigne par la même occasion le certificat comme étant celui par défaut.

 

Il faut maintenant procéder au déploiement du certificat pour tous les services auxquels il a été affecté.

Dans putty :

export SYNO_Username='acme' (utilisateur admin créé uniquement pour le certificat)
$ export SYNO_Password='your password'
$ export SYNO_Certificate="Wildcard ndd"
$ ./acme.sh --deploy --home . -d ndd --deploy-hook synology_dsm
 
Enfin, il faut que le renouvellement et le déploiement soient automatiques. On crée une tâche qui va réaliser tout ça dans le planificateur :
  • Utilisateur - root
  • Périodicité: Setup a weekly renewal. For example, 11:00 am every saturday.
  • Task setting: User-defined-script:

# renew certificates

/usr/local/share/acme.sh/acme.sh --cron --home /usr/local/share/acme.sh/

 

C'est tout. Rien de vraiment compliqué par rapport au tuto de ce fil.

Posté(e) (modifié)

Merci pour ta réponse, et pour le petit tuto qui en aidera certainement plus d'un.

L'utilisation de PuttY et WinSCP est trop complexe pour moi (oui je trouve toujours ce tuto plus simple dans le nombre d'étapes et sans l'utilisation de logiciels annexes a l'exception de l'éditeur de texte). Je suis de ceux qui si toutes les étapes d'un tuto ne sont pas clairement mentionnées, dans ce domaine je ne pourrais pas arriver jusqu'au bout par manque de connaissance et compréhension dans ce que je fais.

Ainsi, pour ma question j'aurai préféré rester sous docker sur mon syno via une alternative "secondaire" (tel que seconde instance via un second dossier et second fichier account.conf si possibilité de le faire et de séparer les deux) pour son ndd. Ses connaissances informatiques sont encore pire que les miennes et il ne pourra jamais effectuer tout ça. 

Voilà ce qu'à mon niveau j'aurai essayé d'effectuer mais sans certitude de partir dans la bonne direction :

créer un dossier "Acme2" sous Docker,
Ajouter le fichier account.conf pour le ndd2 de mon beau-frere avec ses valeurs  SAVED_OVH depuis son propre compte ovh, tel que mentionné ci-dessous :

Citation
LOG_FILE="/acme.sh/acme.sh.log"
LOG_LEVEL=1

AUTO_UPGRADE='1'

#NO_TIMESTAMP=1
    
USER_PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
SAVED_OVH_AK='XXXXXXX'
SAVED_OVH_AS='XXXXXXX'
SAVED_OVH_CK='XXXXXXX'

DEFAULT_ACME_SERVER='https://acme-v02.api.letsencrypt.org/directory'

Puis créer le docker sous la forme (changement de Acme par Acme2 ?? )

Citation
docker pull neilpang/acme.sh:latest
docker stop Acme2
docker rm Acme2
docker image prune -f
docker volume ls -qf dangling=true | xargs -r docker volume rm
docker run -d --cpu-shares=10 --memory=134217728 --name=Acme2 -v /volume1/docker/Acme2:/acme.sh:rw --restart unless-stopped neilpang/acme.sh:latest daemon

 

Puis création des certificats via le planificateur de tâches (Remplacement de "docker exec Acme" par "docker exec Acme2")

Citation
docker exec Acme2 sh -c "acme.sh --issue --keylength 4096 -d 'ndd2.ovh' -d '*.ndd2.ovh' --dns dns_ovh"

 

Est-ce aussi simple que cela pour ainsi gérer les deux ndd sous mon docker sans risque de perturbation de l'un à l'autre ?

Modifié par Torvic-Gall
Posté(e)

Hummmm (J’ai eu la notif 🚀)

Alors si je comprends bien tu as ton nas avec ton ndd qui est déployer en auto et tu voudrais juste générer les certificats de ton pote, alors oui cela ne gênera en rien sur ton nas, tu fais une seconde instance et tu saute la partie pour le déploiement automatique (Et le premier import manuel du coup), te suffira juste de faire un dossier partager dans lequel le certificat sera accessible par ton amis qui viendra le récupérer tous les 2 mois.

Par contre si tu veux lui déployer en auto le certificat alors tu lui fais l’import manuel, puis de ton nas le déploiement automatique en utilisant son ndd et la il aura rien a faire. (Avec un compte qui n’a accès à aucun service, accessible que de ton ip et un mot de passe fort bien sûrs)

Posté(e)

C'est ça en effet. Je veux juste lui créer les certificats et lui partager le dossier dans lequel ils seront générés et il s'occupera de les récupérer et de les ajouter à son syno.

Est-ce que tu confirmes donc les étapes reprises dans mon message précédent pour configurer cette seconde instance nommée pour le coup Acme2 ?

Si fonctionnement correct comme actuellement pour le miens, je suis supposé avoir dans "docker/Acme2/ndd2" les 3 fichiers nécessaire à lui partager qu'il récupèrera en ayant accès à ce dossier ndd2 (après configuration de ses clés OVH dans le account.conf bien entendu).

Posté(e) (modifié)

Merci, je vais essayer ça alors !

Edit : Je confirme le bon fonctionnement de cette seconde instance !  Second ndd opérationnel en moins de 5min
PS : aucun problème avec les termes "SAVED_OVH_ " dans le fichier account.conf

Modifié par Torvic-Gall

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.