Aller au contenu

[TUTO]Création d'un Certificat "wilcard" Let'sEncrypt avec la méthode "acme.sh"


oracle7

Messages recommandés

Il y a 8 heures, Mic13710 a dit :

Je viens vers toi à propos de ce tuto car je me demande quelle en est encore la pertinence.

Je ne sais pas si le script est encore pertinent, mais je peux te dire que le tuto l'est lui!!

Il est bien plus clair, détaillé, etc,  que le tuto d' @Einsteinium qui semble lui, plus s'adresser à des habitués ("10 min si vous allez vite". Oui oui oui...🙂 )

Pour un noobs dans mon genre c'est essentiel d’être pris par la main de la sorte sur ce genre de manip!!

 

Lien vers le commentaire
Partager sur d’autres sites

@Mic13710

Bonjour,

Il y a 7 heures, Mic13710 a dit :

Je viens vers toi à propos de ce tuto car je me demande quelle en est encore la pertinence.

Désolé mais ce TUTO a à mon sens, toujours sa pertinence. En voici ci-après quelques raisons :

  1. D'une part, à ce jour, il est le seul (du moins sur le présent forum) à proposer une méthode d'obtention détaillée d'un certificat LE pour un domaine personnalisé autre qu'un domaine en xxx.synology.me.
     
  2. D'autre part, cette méthode s'adresse à ceux qui n'ont pas :
    1. soit tout simplement les connaissances suffisantes pour mettre en œuvre la méthode équivalente sous docker même si cette dernière est, je te l'accorde, simple pour un "initié",
    2. soit tout aussi simplement qui ne souhaitent pas mettre en œuvre l'outil docker,
    3. soit qui ne savent pas mettre en œuvre l'outil docker,
    4. ou même encore soit parce que leur NAS n'accepte pas docker. 
       
  3. Sauf preuve du contraire, le déploiement fait par l'outil acme.sh pour les fichiers du certificat, n'est pas complet et je l'explique dans le TUTO au §10. Il nécessite toujours après coup (renouvellement d'un certificat existant marqué par défaut), d'aller manuellement affecter le certificat aux différents services d'une part et d'autre part, les fichiers ".pem" du certificat ne sont pas recopiés partout où ils devraient l'être sur le NAS. De fait, les navigateurs Web utilisent alors encore les anciens fichiers après un renouvellement ce qui génère des erreurs à l'utilisation.
    Le nouveau hook "synology_dsm.sh" fait peut-être bien maintenant ce déploiement pour les répertoires que tu cites (/usr/syno/etc/certificate » et « /usr/local/etc/certificate) mais les récentes modifications effectuées sur ce script (cf hystory sur github) ne font pas état de corrections dans ce sens et sauf erreur de ma part, elles ne concernent pas du tout ces points précis.
    Ce sont principalement ces deux problèmes qui nous ont conduit @bruno78 (surtout lui pour la partie codage) et moi même à mettre en place quelque chose qui automatisait tous ces manques au travers du script python actuel.

     
  4. Accessoirement, le script python permet également de forcer le renouvellement du certificat sans avoir à attendre la date fatidique, selon le bon vouloir et/ou le besoin de l'utilisateur. C'est une fonctionnalité qui existe pas ailleurs et qui est bien utile au demeurant pour les novices qui mettent en œuvre la méthode même si beaucoup se font ensuite piéger par les limitations imposées par LE (5 tentatives maxi par semaine).
     
  5. Enfin, saches que @bruno78 travaille actuellement pour automatiser (toujours via le script) la mise à jour du DID afin d'éviter les problèmes de non renouvellement fréquemment rencontrés ces derniers temps par des membres qui utilisent la 2FA et qui sont dûs à une péremption du DID avant la date de renouvellement du certificat. Laissons lui du temps car la chose est très loin d'être aussi simple que cela à gérer. Du coup, acme.sh ne peut se connecter au NAS et "plante" avec des messages pas forcément explicites vis à vis du DID. Ce problème doit aussi arriver avec la méthode docker à ceux qui utilisent la 2FA.
     
  6. Pour ton info, depuis la mise en œuvre de la méthode avec le script python, c'est à dire depuis environ 6 mois maintenant, tous mes renouvellements s'effectuent sans soucis. S'il n'y avait pas ce problème de DID dont la variable SYNO_DID disparait aussi parfois sans explication du fichier "/usr/local/share/acme.sh/account.conf" et qu'il faut surveiller, j'en arriverais presque à oublier le sujet certificat LE.

Voilà un argumentaire qui vaut ce qu'il vaut. Tout à fait ouvert pour en discuter.

J'ajouterais enfin, avec un peu de recul, que ce TUTO semble répondre manifestement à un besoin des membres "novices" qui veulent être guidés pour générer leur certificat LE. C'était un peu aussi l'objection initial pour sa rédaction.

En espérant ne pas avoir été trop long et confus dans mes explications.

Cordialement

oracle7😉

Lien vers le commentaire
Partager sur d’autres sites

il y a 55 minutes, oracle7 a dit :

Sauf preuve du contraire, le déploiement fait par l'outil acme.sh pour les fichiers du certificat, n'est pas complet et je l'explique dans le TUTO au §10. Il nécessite toujours après coup (renouvellement d'un certificat existant marqué par défaut), d'aller manuellement affecter le certificat aux différents services d'une part et d'autre part, les fichiers ".pem" du certificat ne sont pas recopiés partout où ils devraient l'être sur le NAS.

Absolument pas. Je n'ai rien eu à faire pour rétablir les affectations. Et je n'ai pas qu'un seul domaine, ce qui pourrait simplifier les choses. Comme je l'ai écrit, je n'ai fait que le déploiement et basta. tous les ".pem" sont en place, les infos renvoyées par Firefox sur les certificats sont conformes aux dernières mises à jour, les affectations n'ont pas bougé. Alors, je veux bien creuser un peu plus mais en l'état je ne vois rien qui cloche.

Je ne dis pas que ton script ne sert à rien, je dis qu'il ne sert plus à grand chose, ou pour être plus précis, qu'il ne m'est d'aucune utilité.

As-tu au moins essayé de ne faire que le déploiement ? Parce que faire tourner un script qui est sensé corriger des erreurs qui n'existent plus ne prouve pas qu'il sert à quelque chose. Juste qu'il s'évertue à recopier des fichiers qui n'ont pas besoin de l'être.

il y a 55 minutes, oracle7 a dit :

Accessoirement, le script python permet également de forcer le renouvellement du certificat sans avoir à attendre la date fatidique, selon le bon vouloir et/ou le besoin de l'utilisateur.

Je ne vois pas l'intérêt d'un déclenchement avant les 60 jours, mais s'il faut le faire, un simple --force dans le script permet de renouveler le certificat.

il y a 55 minutes, oracle7 a dit :

S'il n'y avait pas ce problème de DID dont la variable SYNO_DID

Aisément contournable en créant un user admin spécifique uniquement pour ça que tu appelles par exemple ACME avec des droits très limités et sans double authentification.

Lien vers le commentaire
Partager sur d’autres sites

il y a 22 minutes, oracle7 a dit :

Il nécessite toujours après coup (renouvellement d'un certificat existant marqué par défaut), d'aller manuellement affecter le certificat aux différents services d'une part et d'autre part, les fichiers ".pem" du certificat ne sont pas recopiés partout où ils devraient l'être sur le NAS. De fait, les navigateurs Web utilisent alors encore les anciens fichiers après un renouvellement ce qui génère des erreurs à l'utilisation.

Euh non... la méthode que j’utilise via docker, avec le hook de déploiement qui au final est utilisé aussi ici... marche parfaitement... je n’ai eu aucune action manuel à faire pour les différents services et que sa soit les applications mobiles ou navigateur, le nouveau certificat été directement pris en charge... Bref la copie est à revoir de ce côté là...

il y a 40 minutes, nebelnic a dit :

Il est bien plus clair, détaillé, etc,  que le tuto d' @Einsteinium qui semble lui, plus s'adresser à des habitués ("10 min si vous allez vite". Oui oui oui...🙂 )

J’ai revisité le tutoriel et encore plus simplifié... donc oui en 10 minutes c’est fait, y a pas de bla-bla, on va à l’essentiel dans ce tutoriel la, des novices l’on mis en usage sans soucis 😉

Lien vers le commentaire
Partager sur d’autres sites

Vraiment un grand merci à @oracle7 et @bruno78 (aussi qu'aux autres contributeurs) pour cette documentation très détaillée et vraiment très simple a mettre en œuvre. Du très bon boulot. 👏

Je l'ai utilisée 2 fois (suite changement de nom de domaine). Sachez pas ailleurs qu'il est tout à fait possible de générer un certificat LE pour 2 nom de domaine différent. La commande suivante passe très bien. A condition bien sur que les nom de domaine appartiennent au même compte OVH.

$ ./acme.sh --issue --keylength 4096 -d "ndd.tld" -d "*.ndd.tld" -d "ndd2.tld" -d "*.ndd2.tld" --dns "$CERT_DNS"

Je suis impatient d’être dans 60 jours et constater le renouvellement automatique du certificat.

 

Cordialement

Nico

Lien vers le commentaire
Partager sur d’autres sites

Bonjour à tous,

étant légèrement partie prenante, je vous fait part de mon point de vue qui je l'espère ne heurtera personne :

  • je ne suis qu'un amateur s'intéressant à ce qu'il touche ....
  • ce script python est né il y a plusieurs mois, suite aux difficultés que je rencontrais pour le renouvellement de mes domaines avec la méthode décrite par Oracle7.
  • aujourd'hui le script s'est nettement amélioré et ... complexifié, et devient difficile à maintenir. Un bon soft est un soft clair, net, précis. Ce n'est plus le cas ici malheureusement, j'en suis conscient.
  • Ayant appris depuis, si c'était à refaire, je ne le referai pas comme ça.
  • je ne l'utilise plus à titre personnel.
  • Je ne pense pas qu’il y ai lieu de le porter sous DSM7
  • je n'ai pas de raison de ne pas croire que le script devient inutile pour un certain nombre d'entre vous, comme il peut rester utile pour d'autres.
  • Quant au transfert automatique du DID, .... je ne sais pas faire sans introduire encore plus de complexité et de contrainte. Ça fait un mois que je suis dessus, il y a des idées, mais bien trop de contraintes et d'aléas. Je jette l'éponge. Par rapport à un user type admin bien configuré, sans DID, avec juste le minimum d'autorisation nécessaire, il n'y a pas photo. Après il y a peut-être une méthode élégante, mais je ne la connais pas.

Je ne rentrerai pas dans le débat pour savoir si il faut le laisser accessible ou pas. De mon côté, je continuerai, à la demande, à apporter des corrections si je peux et à aider ceux qui souhaitent s'en servir, y compris via des discussions publiques sur le forum. Par contre, je privilégierais plutôt des corrections et une mise à disposition par MP plutôt qu'une plus large diffusion du script. Soyons clair sur les objectifs : Syno / LE / acme ont vocation à faire le boulot jusqu'au bout, donc le script à vocation à disparaitre car finalement ce n'est qu'une rustine.

Dernier point : une ou 2 personnes m'ont indiqué être intéressées pour une utilisation pro ou semi-pro. Là je dis /!\STOP/!\. En aucun cas je n'aurai moi même une confiance suffisante dans ce script, développé de façon tout sauf professionnelle,  pour une telle utilisation. Je connais mes limites.

Dernier dernier point : cela aura été extrêmement instructif. Merci à nas-forum et à tous ses contributeurs.

cdt

Bruno78

Lien vers le commentaire
Partager sur d’autres sites

Il y a 17 heures, oracle7 a dit :

ou même encore soit parce que leur NAS n'accepte pas docker. 

 

Finalement ce point me semble être le plus important! Qu'en on voit la liste vraiment limitée des matériels compatibles:

https://www.synology.com/fr-fr/dsm/packages/Docker

A titre personnel, le mien un DS215j (modèle J, du "novice de base" justement tiens... ; probablement un des plus vendu?) n'est pas dans la liste...

 

Il y a 3 heures, bruno78 a dit :

Je ne pense pas qu’il y ai lieu de le porter sous DSM7

 

Vu le point que je viens d’aborder plus haut , je ne suis pas d'accord.

A moins que vous m'expliquiez une méthode n’utilisant ni ce script , ni Docker.

Cordialement.
nebelnic

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

il y a 44 minutes, nebelnic a dit :

A moins que vous m'expliquiez une méthode n’utilisant ni ce script , ni Docker

Justement, le tuto sur github dont j'ai parlé plus haut que j'utilise sur tous les NAS non compatibles Docker.

Et si vous le comparez au tuto d' @Einsteinium, vous verrez qu'il est très similaire. Il y fait d'ailleurs référence à la fin de son tuto.

Que ce soit avec Docker ou pas, la méthode est la même : on passe par le deploy_hook.

La seule différence c'est qu'avec Docker, le certificat est créé dans une instance Docker alors que sans, il est créé dans DSM. Les deux utilisent le même script acme.sh.

Docker n'est absolument pas une nécessité puisqu'on fait au final la même chose que ce soit avec ou sans. C'est juste une autre manière d'obtenir le certificat qui est fondamentalement la même dans les deux cas avec des commandes quasi identiques.

Le déploiement est ensuite strictement le même puisqu'il s'agit de déployer le certificat dans les dossiers appropriés en utilisant le deploy_hook de DSM.

Il y a 18 heures, oracle7 a dit :

le déploiement fait par l'outil acme.sh pour les fichiers du certificat, n'est pas complet

Je ne l'avez pas relevé.

acme.sh ne fait pas de déploiement. Il se contente d'obtenir le certificat. C'est le deploy_hook de DSM qui fait ensuite le déploiement.

Lien vers le commentaire
Partager sur d’autres sites

Il y a 4 heures, Mic13710 a dit :

Justement, le tuto sur github dont j'ai parlé plus haut que j'utilise sur tous les NAS non compatibles Docker.

Et si vous le comparez au tuto d' @Einsteinium, vous verrez qu'il est très similaire. Il y fait d'ailleurs référence à la fin de son tuto.

Merci @Mic13710!

Le tuto de github est un peu "brut de fonte" pour moi, mais ça doit pouvoir se faire en regardant celui d' @Einsteinium en parallèle... C’est surtout cette partie cloudflare -DNS du début ou j'ai vite été perdu ne sachant pas trop comment appliqué ça à OVH. Mais bon j'ai regardé ça rapidement.... Je m'étais plongé un peu plus hier suite à la réponse d"@Einsteinium sur son tuto pour voir si effectivement c’était faisable avec mes moyens bien limités. 😉  ça semble effectivement relativement simple. Juste qu'au tout début, j’étais tout simplement immédiatement perdu car il ne parle pas du tout de l'install de docker. Quand je dis "prendre par la main " c'est vraiment ça.... Et le tuto d' @oracle7 est vraiment très bien pour ça!

Bref il y aura peut être une âme charitable qui aura du temps à perdre pour faire un tuto plus complet que celui de gihub, appliqué à OVH. En attendant une installation de DSM7 d'ici quelques temps,  je reste sur ce script qui fonctionne parfaitement chez moi pour l'instant.

 

 

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

@Mic13710

Bonjour,

Il y a 4 heures, Mic13710 a dit :

acme.sh ne fait pas de déploiement. Il se contente d'obtenir le certificat. C'est le deploy_hook de DSM qui fait ensuite le déploiement.

Ah bon !, pourtant ici : https://github.com/acmesh-official/acme.sh/wiki/deployhooks#20-deploy-the-cert-into-synology-dsm

il est pourtant bien expliqué qu'il faut bien lancer ce type de commande (ce que l'on fait dans le TUTO) après la création du certificat :

# export SYNO_Scheme="http" # Can be set to HTTPS, defaults to HTTP
# export SYNO_Hostname="localhost" # Specify if not using on localhost
# export SYNO_Port="5000" # Port of DSM WebUI, defaults to 5000 for HTTP and 5001 for HTTPS
export SYNO_Username="DSM_Admin_Username"
export SYNO_Password="DSM_Admin_Password"
export SYNO_Certificate="acme.sh certificate" # Description text in Control Panel -> Security -> Certificates
export SYNO_Create=1 # defaults to off, this setting is not saved.  By setting to 1 we create the certificate if it's not in DSM
acme.sh --deploy -d example.com --deploy-hook synology_dsm

Ou bien j'ai raté un truc ou bien c'est bien "acme.sh" qui lance le déploiement des fichiers du certificat dans DSM.

C'est justement après cette opération que le script python trouve son utilité pour "finir le travail" correctement.

Le déploiement est assuré automatiquement quand on importe manuellement les fichiers du certificat dans DSM, oui je suis d'accord MAIS pas après leur création par acme.sh. C'est du moins le comportement que j'ai constaté.

Cordialement

oracle7😉

Modifié par oracle7
Lien vers le commentaire
Partager sur d’autres sites

@nebelnic

Bonjour,

il y a 28 minutes, nebelnic a dit :

Bref il y aura peut être une âme charitable qui aura du temps à perdre pour faire un tuto plus complet que celui de gihub, appliqué à OVH.

Si tu prends le temps de comparer le TUTO de Github et le présent TUTO tu t’apercevras qu'ils font tous les deux la même chose mais pour ce dernier de façon plus détaillée et surtout adaptée à l'environnement OVH.

La seule différence, qui a été introduite plus tard par rapport à la version initiale du présent TUTO, est l'utilisation du script python en lieu et place de la commande de base pour le renouvellement du certificat.

Dans ce script python, qui reprend la commande de base pour le renouvellement, on a fait que rajouter des corrections pour palier les problèmes constatés par les utilisateurs lors du renouvellement quelques temps après les premières mises en œuvre du TUTO, ainsi qu'adjoindre des fonctionnalités supplémentaires (force, clear log, ...). Ni plus ni moins.

Cordialement

oracle7😉

Lien vers le commentaire
Partager sur d’autres sites

Il y a 16 heures, nebelnic a dit :

C’est surtout cette partie cloudflare -DNS du début ou j'ai vite été perdu ne sachant pas trop comment appliqué ça à OVH.

cloudfare est pris en exemple par l'auteur. Ce n'est pas à suivre aveuglément. Puisque vous avez suivi ce tuto, vous avez déjà toutes les clés OVH pour passer directement à l'installation.

Pour lancer la configuration DNS, il faut simplement utiliser les mêmes clés et les exporter :

export OVH_AK='Application Key'
export OVH_AS='Application Secret'
export OVH_CK='Consumer Key'

@oracle7 Tu as tout à fait raison. Ce n'est pas DSM mais bien acme.sh qui lance le déploiement en appelant un autre script : /usr/local/share/acme.sh/deploy/synology_dsm.sh. Ce dernier a été mis à jour plusieurs fois en 2020, la dernière date du 10 décembre, ce qui explique probablement que le déploiement s'effectue maintenant normalement et sans l'aide d'un script supplémentaire.

 

Lien vers le commentaire
Partager sur d’autres sites

@Mic13710

Bonjour,

Il y a 4 heures, Mic13710 a dit :

Ce dernier a été mis à jour plusieurs fois en 2020, la dernière date du 10 décembre, ce qui explique probablement que le déploiement s'effectue maintenant normalement et sans l'aide d'un script supplémentaire.

Sauf que les modifications apportées le 10/12/2020 dernier (et pas plus que la précédente du 26/07/2020, spécifique du DS218+) n'ont pas touché au déploiement lui même (répartition des fichiers du certificat) et ont réglé que des problèmes de token d'authentification notamment pour DSM7 et de DID.

image.png.a77191fb086395d23575e5ec6255a7cf.png

Désolé d'insister mais donc pour moi le problème est toujours là et justifie pleinement le script python jusqu'à preuve du contraire.

Cordialement

oracle7😉

 

Lien vers le commentaire
Partager sur d’autres sites

Alors il faudra expliquer à ceux qui ne l'utilisent pas, et j'en suis, pourquoi ça fonctionne très bien sans.

Pour moi, sans vouloir dénigrer le travail qui a été fait et que je respecte, ce script n'a (plus) aucun intérêt.

Edit :

Mais si tu es réellement convaincu qu'il y a un problème, plutôt que de pallier des dysfonctionnements à coup de script, il me semble plus productif d'alerter les contributeurs de github pour qu'ils apportent une solution qui profite à tous.

C'est ici que ça se passe pour synology_dsm.sh : https://github.com/acmesh-official/acme.sh/issues/2727

Lien vers le commentaire
Partager sur d’autres sites

J'utilise une autre solution qu'acme pour la gestion de mes certificats, mais si je me souviens bien la question au début du tutoriel était que le script de @bruno78 puisse également transféré les services d'un certificat à un autre.

Typiquement la première fois qu'on génère son certificat, il faut manuellement transférer par après les services sur le nouveau certificat, pour que les services soient redémarrés par le hook au renouvellement. Des tests que j'ai faits pour mon tutoriel sur le renouvellement d'un certificat pour une zone publique hébergée sur son propre NAS, acme ne gère pas cet aspect (et c'est tout à fait normal et souhaitable, ce serait un peu trop invasif sinon).

De souvenir le script Python gérait justement cet aspect-là, mais je me trompe peut-être, à ma connaissance en effet tout le reste est correctement géré par le hook pour DSM de acme. En ce cas, le script n'est utile que lorsqu'on fait sa première demande de certificat, et il ne fonctionne logiquement que sur le NAS qui héberge le script, si on fait X déploiements alors sur les autres NAS, le déplacement des services devra être fait manuellement.

Lien vers le commentaire
Partager sur d’autres sites

@.Shad. tout à fait !

Les 2 aspects que le script tente d'aborder tant bien que mal sont :

  • l'affectation des service sur le nouveau certificat
  • la conservation du certificat par defaut (si l'on a plusieurs certificats, le dernier renouvellé devient toujours celui par défaut si on ne fait rien .... )

Et donc oui cela ne peut concerner que le NAS local hebergeant le script.

Ceci dans un but d'automatisation complète, qui me paraissait une bonne idée à l'époque. Mais je peux tout à fait comprendre que chacun choisisse une balance différente entre automatisation et intrusion excessive. C'est un choix personnel.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour à tous,

Je fais appel à votre aide, ne parvenant plus à mettre en place le certificat depuis plusieurs mois, après de nombreux essais.

L'erreur "invalid domain" apparaît lorsque je crée le certificat :

[Wed Feb 24 21:58:44 CET 2021] Lets find script dir.
[Wed Feb 24 21:58:44 CET 2021] _SCRIPT_='./acme.sh'
[Wed Feb 24 21:58:44 CET 2021] _script='/usr/local/share/acme.sh/acme.sh'
[Wed Feb 24 21:58:44 CET 2021] _script_home='/usr/local/share/acme.sh'
[Wed Feb 24 21:58:44 CET 2021] Using config home:/usr/local/share/acme.sh
https://github.com/acmesh-official/acme.sh
v2.8.9
[Wed Feb 24 21:58:44 CET 2021] Running cmd: issue
[Wed Feb 24 21:58:44 CET 2021] _main_domain='mondomaine.fr'
[Wed Feb 24 21:58:44 CET 2021] _alt_domains='*.mondomaine.fr'
[Wed Feb 24 21:58:44 CET 2021] Using config home:/usr/local/share/acme.sh
[Wed Feb 24 21:58:44 CET 2021] default_acme_server
[Wed Feb 24 21:58:44 CET 2021] ACME_DIRECTORY='https://acme-v02.api.letsencrypt.org/directory'
[Wed Feb 24 21:58:44 CET 2021] DOMAIN_PATH='/volume1/Certs/mondomaine.fr'
[Wed Feb 24 21:58:44 CET 2021] Using ACME_DIRECTORY: https://acme-v02.api.letsencrypt.org/directory
[Wed Feb 24 21:58:44 CET 2021] _init api for server: https://acme-v02.api.letsencrypt.org/directory
[Wed Feb 24 21:58:44 CET 2021] GET
[Wed Feb 24 21:58:44 CET 2021] url='https://acme-v02.api.letsencrypt.org/directory'
[Wed Feb 24 21:58:44 CET 2021] timeout=
[Wed Feb 24 21:58:45 CET 2021] _CURL='curl --silent --dump-header /usr/local/share/acme.sh/http.header  -L  -g '
[Wed Feb 24 21:58:45 CET 2021] ret='0'
[Wed Feb 24 21:58:45 CET 2021] ACME_KEY_CHANGE='https://acme-v02.api.letsencrypt.org/acme/key-change'
[Wed Feb 24 21:58:45 CET 2021] ACME_NEW_AUTHZ
[Wed Feb 24 21:58:45 CET 2021] ACME_NEW_ORDER='https://acme-v02.api.letsencrypt.org/acme/new-order'
[Wed Feb 24 21:58:45 CET 2021] ACME_NEW_ACCOUNT='https://acme-v02.api.letsencrypt.org/acme/new-acct'
[Wed Feb 24 21:58:45 CET 2021] ACME_REVOKE_CERT='https://acme-v02.api.letsencrypt.org/acme/revoke-cert'
[Wed Feb 24 21:58:45 CET 2021] ACME_AGREEMENT='https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf'
[Wed Feb 24 21:58:45 CET 2021] ACME_NEW_NONCE='https://acme-v02.api.letsencrypt.org/acme/new-nonce'
[Wed Feb 24 21:58:45 CET 2021] ACME_VERSION='2'
[Wed Feb 24 21:58:45 CET 2021] Le_NextRenewTime
[Wed Feb 24 21:58:46 CET 2021] Using CA: https://acme-v02.api.letsencrypt.org/directory
[Wed Feb 24 21:58:46 CET 2021] _on_before_issue
[Wed Feb 24 21:58:46 CET 2021] _chk_main_domain='mondomaine.fr'
[Wed Feb 24 21:58:46 CET 2021] _chk_alt_domains='*.mondomaine.fr'
[Wed Feb 24 21:58:46 CET 2021] Le_LocalAddress
[Wed Feb 24 21:58:46 CET 2021] d='mondomaine.fr'
[Wed Feb 24 21:58:46 CET 2021] Check for domain='mondomaine.fr'
[Wed Feb 24 21:58:46 CET 2021] _currentRoot='dns_ovh'
[Wed Feb 24 21:58:46 CET 2021] d='*.mondomaine.fr'
[Wed Feb 24 21:58:46 CET 2021] Check for domain='*.mondomaine.fr'
[Wed Feb 24 21:58:46 CET 2021] _currentRoot='dns_ovh'
[Wed Feb 24 21:58:46 CET 2021] d
[Wed Feb 24 21:58:46 CET 2021] _saved_account_key_hash is not changed, skip register account.
[Wed Feb 24 21:58:46 CET 2021] Read key length:4096
[Wed Feb 24 21:58:46 CET 2021] _createcsr
[Wed Feb 24 21:58:46 CET 2021] Multi domain='DNS:mondomaine.fr,DNS:*.mondomaine.fr'
[Wed Feb 24 21:58:46 CET 2021] Getting domain auth token for each domain
[Wed Feb 24 21:58:46 CET 2021] d='*.mondomaine.fr'
[Wed Feb 24 21:58:46 CET 2021] d
[Wed Feb 24 21:58:46 CET 2021] url='https://acme-v02.api.letsencrypt.org/acme/new-order'
[Wed Feb 24 21:58:46 CET 2021] payload='{"identifiers": [{"type":"dns","value":"mondomaine.fr"},{"type":"dns","value":"*.mondomaine.fr"}]}'
[Wed Feb 24 21:58:46 CET 2021] RSA key
[Wed Feb 24 21:58:46 CET 2021] HEAD
[Wed Feb 24 21:58:46 CET 2021] _post_url='https://acme-v02.api.letsencrypt.org/acme/new-nonce'
[Wed Feb 24 21:58:46 CET 2021] _CURL='curl --silent --dump-header /usr/local/share/acme.sh/http.header  -L  -g  -I  '
[Wed Feb 24 21:58:46 CET 2021] _ret='0'
[Wed Feb 24 21:58:47 CET 2021] POST
[Wed Feb 24 21:58:47 CET 2021] _post_url='https://acme-v02.api.letsencrypt.org/acme/new-order'
[Wed Feb 24 21:58:47 CET 2021] _CURL='curl --silent --dump-header /usr/local/share/acme.sh/http.header  -L  -g '
[Wed Feb 24 21:58:47 CET 2021] _ret='0'
[Wed Feb 24 21:58:47 CET 2021] code='201'
[Wed Feb 24 21:58:47 CET 2021] Le_LinkOrder='https://acme-v02.api.letsencrypt.org/acme/order/91941364/8103665680'
[Wed Feb 24 21:58:47 CET 2021] Le_OrderFinalize='https://acme-v02.api.letsencrypt.org/acme/finalize/91941364/8103665680'
[Wed Feb 24 21:58:47 CET 2021] url='https://acme-v02.api.letsencrypt.org/acme/authz-v3/11121885598'
[Wed Feb 24 21:58:47 CET 2021] payload
[Wed Feb 24 21:58:47 CET 2021] POST
[Wed Feb 24 21:58:47 CET 2021] _post_url='https://acme-v02.api.letsencrypt.org/acme/authz-v3/11121885598'
[Wed Feb 24 21:58:47 CET 2021] _CURL='curl --silent --dump-header /usr/local/share/acme.sh/http.header  -L  -g '
[Wed Feb 24 21:58:48 CET 2021] _ret='0'
[Wed Feb 24 21:58:48 CET 2021] code='200'
[Wed Feb 24 21:58:48 CET 2021] url='https://acme-v02.api.letsencrypt.org/acme/authz-v3/11121885599'
[Wed Feb 24 21:58:48 CET 2021] payload
[Wed Feb 24 21:58:48 CET 2021] POST
[Wed Feb 24 21:58:48 CET 2021] _post_url='https://acme-v02.api.letsencrypt.org/acme/authz-v3/11121885599'
[Wed Feb 24 21:58:48 CET 2021] _CURL='curl --silent --dump-header /usr/local/share/acme.sh/http.header  -L  -g '
[Wed Feb 24 21:58:49 CET 2021] _ret='0'
[Wed Feb 24 21:58:49 CET 2021] code='200'
[Wed Feb 24 21:58:49 CET 2021] d='mondomaine.fr'
[Wed Feb 24 21:58:49 CET 2021] Getting webroot for domain='mondomaine.fr'
[Wed Feb 24 21:58:49 CET 2021] _w='dns_ovh'
[Wed Feb 24 21:58:49 CET 2021] _currentRoot='dns_ovh'
[Wed Feb 24 21:58:49 CET 2021] entry='"type":"dns-01","status":"pending","url":"https://acme-v02.api.letsencrypt.org/acme/chall-v3/11121885599/VFca9w","token":"qYfE7uBOa6zGiN86mI0FDQyoBGQ7G8bke69CfS0CuwU"'
[Wed Feb 24 21:58:49 CET 2021] token='qYfE7uBOa6zGiN86mI0FDQyoBGQ7G8bke69CfS0CuwU'
[Wed Feb 24 21:58:49 CET 2021] uri='https://acme-v02.api.letsencrypt.org/acme/chall-v3/11121885599/VFca9w'
[Wed Feb 24 21:58:49 CET 2021] keyauthorization='qYfE7uBOa6zGiN86mI0FDQyoBGQ7G8bke69CfS0CuwU.c2AHuhGLpeUctTHAuhH35P4u5oD1BVn-Or827ln_XM0'
[Wed Feb 24 21:58:49 CET 2021] dvlist='mondomaine.fr#qYfE7uBOa6zGiN86mI0FDQyoBGQ7G8bke69CfS0CuwU.c2AHuhGLpeUctTHAuhH35P4u5oD1BVn-Or827ln_XM0#https://acme-v02.api.letsencrypt.org/acme/chall-v3/11121885599/VFca9w#dns-01#dns_ovh'
[Wed Feb 24 21:58:49 CET 2021] d='*.mondomaine.fr'
[Wed Feb 24 21:58:49 CET 2021] Getting webroot for domain='*.mondomaine.fr'
[Wed Feb 24 21:58:49 CET 2021] _w='dns_ovh'
[Wed Feb 24 21:58:49 CET 2021] _currentRoot='dns_ovh'
[Wed Feb 24 21:58:49 CET 2021] entry='"type":"dns-01","status":"pending","url":"https://acme-v02.api.letsencrypt.org/acme/chall-v3/11121885598/17Qw9A","token":"Sc3zyaVFuYgvsHrSo6IDgS_HQ8qC5GBzlAoGCU064pY"'
[Wed Feb 24 21:58:49 CET 2021] token='Sc3zyaVFuYgvsHrSo6IDgS_HQ8qC5GBzlAoGCU064pY'
[Wed Feb 24 21:58:49 CET 2021] uri='https://acme-v02.api.letsencrypt.org/acme/chall-v3/11121885598/17Qw9A'
[Wed Feb 24 21:58:49 CET 2021] keyauthorization='Sc3zyaVFuYgvsHrSo6IDgS_HQ8qC5GBzlAoGCU064pY.c2AHuhGLpeUctTHAuhH35P4u5oD1BVn-Or827ln_XM0'
[Wed Feb 24 21:58:49 CET 2021] dvlist='*.mondomaine.fr#Sc3zyaVFuYgvsHrSo6IDgS_HQ8qC5GBzlAoGCU064pY.c2AHuhGLpeUctTHAuhH35P4u5oD1BVn-Or827ln_XM0#https://acme-v02.api.letsencrypt.org/acme/chall-v3/11121885598/17Qw9A#dns-01#dns_ovh'
[Wed Feb 24 21:58:49 CET 2021] d
[Wed Feb 24 21:58:49 CET 2021] vlist='mondomaine.fr#qYfE7uBOa6zGiN86mI0FDQyoBGQ7G8bke69CfS0CuwU.c2AHuhGLpeUctTHAuhH35P4u5oD1BVn-Or827ln_XM0#https://acme-v02.api.letsencrypt.org/acme/chall-v3/11121885599/VFca9w#dns-01#dns_ovh,*.mondomaine.fr#Sc3zyaVFuYgvsHrSo6IDgS_HQ8qC5GBzlAoGCU064pY.c2AHuhGLpeUctTHAuhH35P4u5oD1BVn-Or827ln_XM0#https://acme-v02.api.letsencrypt.org/acme/chall-v3/11121885598/17Qw9A#dns-01#dns_ovh,'
[Wed Feb 24 21:58:49 CET 2021] d='mondomaine.fr'
[Wed Feb 24 21:58:49 CET 2021] _d_alias
[Wed Feb 24 21:58:49 CET 2021] txtdomain='_acme-challenge.mondomaine.fr'
[Wed Feb 24 21:58:49 CET 2021] txt='QrpCuEYB9sAsti8aFuJD3gXFn6j75jEnR7F67LEd2k4'
[Wed Feb 24 21:58:49 CET 2021] d_api='/usr/local/share/acme.sh/dnsapi/dns_ovh.sh'
[Wed Feb 24 21:58:49 CET 2021] Found domain api file: /usr/local/share/acme.sh/dnsapi/dns_ovh.sh
[Wed Feb 24 21:58:49 CET 2021] Adding txt value: QrpCuEYB9sAsti8aFuJD3gXFn6j75jEnR7F67LEd2k4 for domain:  _acme-challenge.mondomaine.fr
[Wed Feb 24 21:58:49 CET 2021] Using OVH endpoint: ovh-eu
[Wed Feb 24 21:58:49 CET 2021] OVH_API='https://eu.api.ovh.com/1.0'
[Wed Feb 24 21:58:49 CET 2021] Checking authentication
[Wed Feb 24 21:58:49 CET 2021] domain
[Wed Feb 24 21:58:49 CET 2021] GET
[Wed Feb 24 21:58:49 CET 2021] url='https://eu.api.ovh.com/1.0/auth/time'
[Wed Feb 24 21:58:49 CET 2021] timeout=30
[Wed Feb 24 21:58:49 CET 2021] _CURL='curl --silent --dump-header /usr/local/share/acme.sh/http.header  -L  -g  --connect-timeout 30'
[Wed Feb 24 21:58:49 CET 2021] ret='0'
[Wed Feb 24 21:58:49 CET 2021] _ovh_p='[hidden](please add '--output-insecure' to see this value)'
[Wed Feb 24 21:58:49 CET 2021] GET
[Wed Feb 24 21:58:49 CET 2021] url='https://eu.api.ovh.com/1.0/domain'
[Wed Feb 24 21:58:49 CET 2021] timeout=
[Wed Feb 24 21:58:49 CET 2021] _CURL='curl --silent --dump-header /usr/local/share/acme.sh/http.header  -L  -g '
[Wed Feb 24 21:58:49 CET 2021] ret='0'
[Wed Feb 24 21:58:49 CET 2021] Consumer key is ok.
[Wed Feb 24 21:58:49 CET 2021] First detect the root zone
[Wed Feb 24 21:58:49 CET 2021] domain/zone/_acme-challenge.mondomaine.fr
[Wed Feb 24 21:58:49 CET 2021] GET
[Wed Feb 24 21:58:49 CET 2021] url='https://eu.api.ovh.com/1.0/auth/time'
[Wed Feb 24 21:58:49 CET 2021] timeout=30
[Wed Feb 24 21:58:49 CET 2021] _CURL='curl --silent --dump-header /usr/local/share/acme.sh/http.header  -L  -g  --connect-timeout 30'
[Wed Feb 24 21:58:49 CET 2021] ret='0'
[Wed Feb 24 21:58:49 CET 2021] _ovh_p='[hidden](please add '--output-insecure' to see this value)'
[Wed Feb 24 21:58:49 CET 2021] GET
[Wed Feb 24 21:58:49 CET 2021] url='https://eu.api.ovh.com/1.0/domain/zone/_acme-challenge.mondomaine.fr'
[Wed Feb 24 21:58:49 CET 2021] timeout=
[Wed Feb 24 21:58:49 CET 2021] _CURL='curl --silent --dump-header /usr/local/share/acme.sh/http.header  -L  -g '
[Wed Feb 24 21:58:50 CET 2021] ret='0'
[Wed Feb 24 21:58:50 CET 2021] domain/zone/mondomaine.fr
[Wed Feb 24 21:58:50 CET 2021] GET
[Wed Feb 24 21:58:50 CET 2021] url='https://eu.api.ovh.com/1.0/auth/time'
[Wed Feb 24 21:58:50 CET 2021] timeout=30
[Wed Feb 24 21:58:50 CET 2021] _CURL='curl --silent --dump-header /usr/local/share/acme.sh/http.header  -L  -g  --connect-timeout 30'
[Wed Feb 24 21:58:50 CET 2021] ret='0'
[Wed Feb 24 21:58:50 CET 2021] _ovh_p='[hidden](please add '--output-insecure' to see this value)'
[Wed Feb 24 21:58:50 CET 2021] GET
[Wed Feb 24 21:58:50 CET 2021] url='https://eu.api.ovh.com/1.0/domain/zone/mondomaine.fr'
[Wed Feb 24 21:58:50 CET 2021] timeout=
[Wed Feb 24 21:58:50 CET 2021] _CURL='curl --silent --dump-header /usr/local/share/acme.sh/http.header  -L  -g '
[Wed Feb 24 21:58:50 CET 2021] ret='0'
[Wed Feb 24 21:58:50 CET 2021] domain/zone/fr
[Wed Feb 24 21:58:50 CET 2021] GET
[Wed Feb 24 21:58:50 CET 2021] url='https://eu.api.ovh.com/1.0/auth/time'
[Wed Feb 24 21:58:50 CET 2021] timeout=30
[Wed Feb 24 21:58:50 CET 2021] _CURL='curl --silent --dump-header /usr/local/share/acme.sh/http.header  -L  -g  --connect-timeout 30'
[Wed Feb 24 21:58:50 CET 2021] ret='0'
[Wed Feb 24 21:58:50 CET 2021] _ovh_p='[hidden](please add '--output-insecure' to see this value)'
[Wed Feb 24 21:58:50 CET 2021] GET
[Wed Feb 24 21:58:50 CET 2021] url='https://eu.api.ovh.com/1.0/domain/zone/fr'
[Wed Feb 24 21:58:50 CET 2021] timeout=
[Wed Feb 24 21:58:50 CET 2021] _CURL='curl --silent --dump-header /usr/local/share/acme.sh/http.header  -L  -g '
[Wed Feb 24 21:58:50 CET 2021] ret='0'
[Wed Feb 24 21:58:50 CET 2021] invalid domain
[Wed Feb 24 21:58:50 CET 2021] Error add txt for domain:_acme-challenge.mondomaine.fr
[Wed Feb 24 21:58:50 CET 2021] _on_issue_err
[Wed Feb 24 21:58:50 CET 2021] Please add '--debug' or '--log' to check more details.
[Wed Feb 24 21:58:50 CET 2021] See: https://github.com/acmesh-official/acme.sh/wiki/How-to-debug-acme.sh
[Wed Feb 24 21:58:50 CET 2021] url='https://acme-v02.api.letsencrypt.org/acme/chall-v3/11121885599/VFca9w'
[Wed Feb 24 21:58:50 CET 2021] payload='{}'
[Wed Feb 24 21:58:50 CET 2021] POST
[Wed Feb 24 21:58:50 CET 2021] _post_url='https://acme-v02.api.letsencrypt.org/acme/chall-v3/11121885599/VFca9w'
[Wed Feb 24 21:58:50 CET 2021] _CURL='curl --silent --dump-header /usr/local/share/acme.sh/http.header  -L  -g '
[Wed Feb 24 21:58:51 CET 2021] _ret='0'
[Wed Feb 24 21:58:51 CET 2021] code='200'
[Wed Feb 24 21:58:51 CET 2021] url='https://acme-v02.api.letsencrypt.org/acme/chall-v3/11121885598/17Qw9A'
[Wed Feb 24 21:58:51 CET 2021] payload='{}'
[Wed Feb 24 21:58:51 CET 2021] POST
[Wed Feb 24 21:58:51 CET 2021] _post_url='https://acme-v02.api.letsencrypt.org/acme/chall-v3/11121885598/17Qw9A'
[Wed Feb 24 21:58:51 CET 2021] _CURL='curl --silent --dump-header /usr/local/share/acme.sh/http.header  -L  -g '
[Wed Feb 24 21:58:51 CET 2021] _ret='0'
[Wed Feb 24 21:58:51 CET 2021] code='200'
[Wed Feb 24 21:58:51 CET 2021] socat doesn't exist.
[Wed Feb 24 21:58:51 CET 2021] Diagnosis versions: 
openssl:openssl
OpenSSL 1.0.2u-fips  20 Dec 2019
apache:
apache doesn't exist.
nginx:
nginx version: nginx/1.16.1
TLS SNI support enabled
socat:
[Wed Feb 24 21:58:51 CET 2021] pid
[Wed Feb 24 21:58:51 CET 2021] No need to restore nginx, skip.
[Wed Feb 24 21:58:51 CET 2021] _clearupdns
[Wed Feb 24 21:58:51 CET 2021] dns_entries
[Wed Feb 24 21:58:51 CET 2021] skip dns.

Dans les premières pages de ce topic, plusieurs personnes ont également eu cette erreur. J'ai donc tenté d'appliquer ce qui a résolu leurs soucis :

  • Respect de la syntaxe des clés générées par l'API OVH (copie dans un fichier texte, etc...)
  • Réinstallation du script acme.sh (avec suppression du fichier account.conf)
  • Connexion en root sur la session SSH (sans le -i)
  • Suppression des API OVH avant chaque nouvel essai
  • Vérification de la syntaxe de mon nom de domaine

Après pas mal d'essais, je jette donc l'éponge et fais appel à votre expertise !

Un grand merci d'avance.

Bonne soirée à tous.

Joh

Lien vers le commentaire
Partager sur d’autres sites

@oracle7, @bruno78,

Comme convenu, je reviens vers vous suite aux renouvellements de 3 certificats sur 2 NAS, deux via la méthode github et un autre via Docker.

Exception faite d'un renouvellement récalcitrant indépendant du déploiement, tout s'est déroulé sans encombre.

Il y a bien entendu cette histoire de certificat par défaut qui s’applique au dernier certificat renouvelé sans tenir compte du réglage initial, mais ce n'est pas vraiment un problème en soit car :

  • ça n'affecte pas les attributions en place,
  • ce n'est le cas que s'il y a plusieurs certificats (mon cas),
  • c'est très facilement corrigeable dans DSM,

Ca touchera l'affectation d'une nouvelle application ou d'une nouvelle source dans le reverse proxy qui se ferait sur le dernier certificat si on ne le corrige pas, ce qui n'est pas non plus un problème puisqu'il faut de toute manière vérifier l'affectation.

Ceci confirme que les problèmes principaux décrits dans le tuto (affectations, distribution des fichiers pem, prise en compte du nouveau certificat dans le navigateur) qui justifiaient un script supplémentaire semblent maintenant résolus, le seul point restant, mais non critique, étant l'affectation du certificat par défaut.

Alors, peut-être que le script garde encore une certaine utilité pour ce dernier point, mais il a un usage très limité car il ne concerne que ceux qui ont plusieurs certificats. C'est loin d'être le cas de tout le monde.

Concernant le certificat, je ne sais pas pour vous, mais il m'arrive très souvent de devoir relancer le renouvellement. Il semble que les serveurs LE soient souvent saturés. Ce n'est pas uniquement avec acme. J'avais le même problème avec la méthode via DSM.

Lien vers le commentaire
Partager sur d’autres sites

Le 24/02/2021 à 22:42, jo.p a dit :

Bonjour à tous,

Je fais appel à votre aide, ne parvenant plus à mettre en place le certificat depuis plusieurs mois, après de nombreux essais.

L'erreur "invalid domain" apparaît lorsque je crée le certificat :


[Wed Feb 24 21:58:44 CET 2021] Lets find script dir.
[Wed Feb 24 21:58:44 CET 2021] _SCRIPT_='./acme.sh'
[Wed Feb 24 21:58:44 CET 2021] _script='/usr/local/share/acme.sh/acme.sh'
[Wed Feb 24 21:58:44 CET 2021] _script_home='/usr/local/share/acme.sh'
[Wed Feb 24 21:58:44 CET 2021] Using config home:/usr/local/share/acme.sh
https://github.com/acmesh-official/acme.sh
...

Dans les premières pages de ce topic, plusieurs personnes ont également eu cette erreur. J'ai donc tenté d'appliquer ce qui a résolu leurs soucis :

  • Respect de la syntaxe des clés générées par l'API OVH (copie dans un fichier texte, etc...)
  • Réinstallation du script acme.sh (avec suppression du fichier account.conf)
  • Connexion en root sur la session SSH (sans le -i)
  • Suppression des API OVH avant chaque nouvel essai
  • Vérification de la syntaxe de mon nom de domaine

Après pas mal d'essais, je jette donc l'éponge et fais appel à votre expertise !

Un grand merci d'avance.

Bonne soirée à tous.

Joh

Petit up ?

Si vous n'avez pas de solution (ou la flemme de vous pencher dessus), auriez vous un tuto simple à me conseiller pour un certificat LE (pour plusieurs sous domaines) ? Sans forcément avoir un renouvellement automatique.

Lien vers le commentaire
Partager sur d’autres sites

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.