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)

Quelques fois mais très rarement. Dans ce cas, je relance un déploiement. Si c'est systématique, c'est peut être que les certificats sont renouvelés ensemble. Il faudrait revoir la chronologie des mises à jour en décalant leurs renouvellements de quelques jours. Rien de garanti.

Posté(e)

dans mon cas c’est à chaque fois. je fais une pause entre deux par exemple :

 

docker exec acme sh -c "acme.sh --deploy -d 'domaine.ovh' --deploy-hook synology_dsm"
sleep 2
docker exec acme sh -c "acme.sh --deploy -d 'home-assistant.domaine.ovh' --deploy-hook synology_dsm"
sleep 2

 

tu entends quoi par je relance un déploiement ?

Posté(e)

Exactement cela : relancer le deploy-hook.

Ceci étant dit, je ne comprends pas très bien votre approche. Est-ce que domaine.ovh et home-assistant.domaine.ovh sont issus du même domaine de premier niveau domaine.ovh ?

Si c'est le cas, il me semble normal que le déploiement soit un peu compliqué.

Pourquoi faire deux certificats séparés alors que tout peut être regroupé en un seul ? Si vous demandez un wildcard *.domaine.ovh avec votre domaine.ovh, ou même home-assistant.domaine.ovh avec domaine.ovh si vous ne voulez couvrir que ce dernier, à ce moment là vous n'avez qu'un seul certificat pour l'ensemble du ndd domaine.ovh.

Attention, le wildcard couvre le deuxième niveau mais pas le troisième. Si vous avez par exemple toto.home-assistant.domaine.ovh, le wildcard ne le couvrira pas. Dans ce cas, il faut l'inclure dans la demande de certificat en indiquant domain.ovh, *.domaine.ovh, home-assistant.domaine.ovh, *.home-assistant.domaine.ovh.

En clair, ne pas multiplier les certificats mais n'en faire qu'un seul qui couvre le domaine principal et ses différents niveaux.

 

Posté(e)

je me rappel plus pourquoi j’étais partie comme ça (ça fait des années) et du coup j'ai de plus en plus de certificat (un seul niveau). donc il faudrait que je re génère le certificat, je vais tester ça pour n'en avoir plus qu'un ça résoudrait mes problèmes.

ha si je me rappel pourquoi j'avais plusieurs certificats! c’était pour ne pas voir la liste des url dans le certificat.

Posté(e)
il y a 42 minutes, msappdem a dit :

c’était pour ne pas voir la liste des url dans le certificat.

Dans quel but ? Parce que si c'est pour que des tiers ne voient pas les ndd dérivés du ndd principal, ce n'est pas ça qui sécurise mieux votre site. Il n'est pas non plus nécessaire de passer par les ndd couverts par le certificat pour trouver cela. Par contre, vous vous embêtez copieusement la vie si vous créez un certificat par ndd. A vous suivre, il me faudrait des dizaines de certificats pour couvrir tous mes domaines. Ce n'est pas sérieux.

Et comme je l'ai dit, vous n'avez pas besoin de donner les noms de chaque ndd créé. Un wildcard couvre l'ensemble et ne donne aucune information sur les noms utilisés en destination.

Reprenez vos certificats (ou votre certificat si vous n'avez qu'un nom de domaine), utilisez le wildcard et ça sera tout de suite beaucoup plus simple.

Posté(e)
Citation

Dans quel but ? Parce que si c'est pour que des tiers ne voient pas les ndd dérivés du ndd principal, ce n'est pas ça qui sécurise mieux votre site.

c'était l'idée....

 

donc uniquement celui la :

docker exec acme sh -c "acme.sh --issue --keylength 4096 -d 'domaine.ovh' -d '*.domaine.ovh' --dns dns_ovh --dnssleep 300"

 

mais je vais avoir des erreurs de prise en compte dans les navigateurs ?

ok je suis une quiche...

j'ai fait :

docker exec acme sh -c "acme.sh --issue --keylength 4096 -d '*.domaine.ovh' --dns dns_ovh --dnssleep 300"

docker exec acme sh -c "acme.sh --deploy -d '*.domaine.ovh' --deploy-hook synology_dsm"

et ça semble fonctionner.

 

Posté(e)

Franchement, je ne comprends pas tout. 

docker exec acme sh -c "acme.sh --issue --keylength 4096 -d 'domaine.ovh' -d '*.domaine.ovh' --dns dns_ovh convenait très bien. Il couvre le premier niveau et tous les deuxième niveaux.

Dans le suivant vous ne couvrez que le deuxième niveau, le ndd principal n'étant pas couvert.

Pour rappel, cette commande est ni plus ni moins celle du tuto.

Posté(e)

c'est moi je m'embrouille tout seul... je vais me poser et refaire propre mais avec un seul certificat je vais moins galérer.

merci pour ta dispo.

Posté(e)

Bonjour @Mic13710
Peux tu m expliquer cette commande svp car j'ai essayer de l’appliquer sur un nas ou le certificat n'a pas éte mis a jour automatiquement cela n' a pas fonctionné 
 

Citation
docker exec Acme sh -c "acme.sh --deploy  -d 'ndd' --deploy-hook synology_dsm"

Je comprend que le ndd c'est mon non de domaine donc pour moi toto.ovh 

Posté(e)

Cette commande ne sert qu'au déploiement d'un certificat valide sur les applications du NAS.

Si le certificat n'a pas été mis à jour comme tu le dis, alors c'est lui qu'il faut aller regarder. Consulte les logs à la date supposée du renouvellement et les jours suivants.

Si tu veux, tu peux aussi forcer l'obtention du certificat avec la commande suivante :

docker exec Acme sh -c "acme.sh --issue --force --keylength 4096 -d 'toto.ovh' -d '*.toto.ovh' --dns dns_ovh --dnssleep 300"

 

Posté(e)

@Mic13710
Suite a manipulation de hier (le redeploy) que j'aurais pas du faire d’après moi.J'ai se retour au lieu du blabla habituel et pas de deploy normal pour la nuit dernier.

Citation

[Sun Oct  5 10:13:05 UTC 2025] Running cmd: deploy
[Sun Oct  5 10:13:05 UTC 2025] Using config home: /acme.sh
[Sun Oct  5 10:13:05 UTC 2025] default_acme_server='https://acme-v02.api.letsencrypt.org/directory'
[Sun Oct  5 10:13:05 UTC 2025] ACME_DIRECTORY='https://acme-v02.api.letsencrypt.org/directory'
[Sun Oct  5 10:13:05 UTC 2025] DOMAIN_PATH='/acme.sh/toto.ovh'
[Sun Oct  5 10:13:05 UTC 2025] _deployApi='/root/.acme.sh/deploy/synology_dsm.sh'
[Sun Oct  5 10:13:05 UTC 2025] _cdomain='toto.ovh'
[Sun Oct  5 10:13:05 UTC 2025] Domain config new key exists, old key SAVED_SYNO_Username='acme.toto.ovh' has been removed.
[Sun Oct  5 10:13:05 UTC 2025] Domain config new key exists, old key SAVED_SYNO_Password='Password' has been removed.
[Sun Oct  5 10:13:05 UTC 2025] Domain config new key exists, old key SAVED_SYNO_Scheme='http' has been removed.
[Sun Oct  5 10:13:05 UTC 2025] Domain config new key exists, old key SAVED_SYNO_Hostname='172.18.0.1' has been removed.
[Sun Oct  5 10:13:05 UTC 2025] Domain config new key exists, old key SAVED_SYNO_Port='5000' has been removed.
[Sun Oct  5 10:13:05 UTC 2025] Domain config new key exists, old key SAVED_SYNO_Certificate='toto.ovh' has been removed.
[Sun Oct  5 10:13:05 UTC 2025] SYNO_CERTIFICATE='toto.ovh'
[Sun Oct  5 10:13:05 UTC 2025] Getting API version...
[Sun Oct  5 10:13:05 UTC 2025] _base_url='http://172.18.0.1:5000'
[Sun Oct  5 10:13:05 UTC 2025] GET
[Sun Oct  5 10:13:05 UTC 2025] url='http://172.18.0.1:5000/webapi/query.cgi?api=SYNO.API.Info&version=1&method=query&query=SYNO.API.Auth'
[Sun Oct  5 10:13:05 UTC 2025] timeout=
[Sun Oct  5 10:13:05 UTC 2025] _CURL='curl --silent --dump-header /acme.sh/http.header  -L  -g '
[Sun Oct  5 10:13:05 UTC 2025] ret='0'
[Sun Oct  5 10:13:05 UTC 2025] Logging into 172.18.0.1:5000...
[Sun Oct  5 10:13:05 UTC 2025] GET
[Sun Oct  5 10:13:05 UTC 2025] url='http://172.18.0.1:5000/webapi/entry.cgi?api=SYNO.API.Auth&version=7&method=login&format=sid&account=acme.toto.ovh&passwd=Password&enable_syno_token=yes'
[Sun Oct  5 10:13:05 UTC 2025] timeout=
[Sun Oct  5 10:13:05 UTC 2025] _CURL='curl --silent --dump-header /acme.sh/http.header  -L  -g '
[Sun Oct  5 10:13:10 UTC 2025] ret='0'
[Sun Oct  5 10:13:10 UTC 2025] Failed to authenticate, no such account or incorrect password.
[Sun Oct  5 10:13:10 UTC 2025] Error deploying for domain: toto.ovh
[Sun Oct  5 10:13:10 UTC 2025] Error encountered while deploying.

J'ai vérifié les mot de passe il est ok et l'url, elle l’était j'ai remis en ligne.
Avoir si cela ce passe comme il faut la nuit prochaine

 

Posté(e)

Tu as un souci au niveau de l'identification. Voici ce que mes logs donnent lors de mon dernier déploiement :

[Sat Aug 30 23:29:08 UTC 2025] url='http://172.17.0.1:5000/webapi/entry.cgi?api=SYNO.API.Auth&version=7&method=login&format=sid&account=<NOM DE MON COMPTE ACME>&passwd=<MOT DE PASSE DE3 MON COMPTE>&enable_syno_token=yes&device_name=CertRenewal&device_id=<LE DEVICE ID>'
[Sat Aug 30 23:29:08 UTC 2025] timeout=
[Sat Aug 30 23:29:08 UTC 2025] _CURL='curl --silent --dump-header /acme.sh/http.header  -L  -g '
[Sat Aug 30 23:29:10 UTC 2025] ret='0'
[Sat Aug 30 23:29:10 UTC 2025] Session ID='<LE SESSION ID>'
[Sat Aug 30 23:29:10 UTC 2025] SynoToken='<LE SYNO TOKEN>'
[Sat Aug 30 23:29:10 UTC 2025] Getting certificates in Synology DSM...
[Sat Aug 30 23:29:10 UTC 2025] POST
[Sat Aug 30 23:29:10 UTC 2025] _post_url='http://172.17.0.1:5000/webapi/entry.cgi'
[Sat Aug 30 23:29:10 UTC 2025] _CURL='curl --silent --dump-header /acme.sh/http.header  -L  -g '
[Sat Aug 30 23:29:10 UTC 2025] _ret='0'
[Sat Aug 30 23:29:10 UTC 2025] escaped_certificate='<LE NOM DE MON CERTIFICAT DANS DSM'
[Sat Aug 30 23:29:10 UTC 2025] Generating form POST request...
[Sat Aug 30 23:29:10 UTC 2025] Upload certificate to the Synology DSM.
[Sat Aug 30 23:29:10 UTC 2025] POST
[Sat Aug 30 23:29:10 UTC 2025] _post_url='http://172.17.0.1:5000/webapi/entry.cgi?api=SYNO.Core.Certificate&method=import&version=1&SynoToken=<LE SYNO TOKEN>&_sid=<LE SESSION ID>'
[Sat Aug 30 23:29:10 UTC 2025] _CURL='curl --silent --dump-header /acme.sh/http.header  -L  -g '
[Sat Aug 30 23:31:12 UTC 2025] _ret='0'
[Sat Aug 30 23:31:12 UTC 2025] Restart HTTP services succeeded.
[Sat Aug 30 23:31:12 UTC 2025] GET
[Sat Aug 30 23:31:12 UTC 2025] url='http://172.17.0.1:5000/webapi/entry.cgi?api=SYNO.API.Auth&version=7&method=logout&_sid=<LE SESSION ID>'
[Sat Aug 30 23:31:12 UTC 2025] timeout=
[Sat Aug 30 23:31:12 UTC 2025] _CURL='curl --silent --dump-header /acme.sh/http.header  -L  -g '
[Sat Aug 30 23:31:13 UTC 2025] ret='0'
[Sat Aug 30 23:31:13 UTC 2025] Success

Comme tu peux le voir, il y a pas mal de choses plus complètes. La première ligne par exemple ne s'arrête pas "enable_syno_token=yes". Par la suite, le script récupère <LE SESSION ID> et <LE SYNO TOKEN> qui sont indispensable pour le déploiement. Comme tu n'as ni l'un ni l'autre, le déploiement s'arrête là.

Tu devrais jeter un oeil dans ton fichier toto.ovh.conf. Voici ce que contient le mien :

Le_Domain='ndd'
Le_Alt='*.ndd'
Le_Webroot='dns_ovh'
Le_PreHook=''
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/<LE FINALIZE>'
Le_LinkOrder='https://acme-v02.api.letsencrypt.org/acme/order/100631007/<LE ORDER>'
Le_LinkCert='https://acme-v02.api.letsencrypt.org/acme/cert/<LE CERT>'
Le_CertCreateTime='1756596547'
Le_CertCreateTimeStr='2025-08-30T23:29:07Z'
Le_NextRenewTimeStr='2025-10-28T23:29:07Z'
Le_NextRenewTime='1761694147'
Le_DeployHook='synology_dsm,'

SAVED_SYNO_DID=''

SAVED_SYNO_TOTP_SECRET=''

SAVED_SYNO_USE_TEMP_ADMIN=''
SAVED_SYNO_USERNAME='<NOM DU COMPTE ACME>'
SAVED_SYNO_PASSWORD='<MOT DE PASSE>'
SAVED_SYNO_DEVICE_ID='<LE DEVICE ID>'
SAVED_SYNO_DEVICE_NAME='CertRenewal'
SAVED_SYNO_SCHEME='http'
SAVED_SYNO_HOSTNAME='172.17.0.1'
SAVED_SYNO_PORT='5000'
SAVED_SYNO_CERTIFICATE='__ACME_BASE64__<NOM DU CERTIFICAT EN BASE 64>__ACME_BASE64__END_'
SAVED_SYNO_SynoToken='<LE SYNO TOKEN>'
Le_DNSSleep='300'

Si tu n'as qu'un seul certificat, il est possible que certaines lignes soient dans le fichier account.conf. Au final, tu devrais retrouver toutes les infos entre les deux fichiers.

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.