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 50 minutes, Mic13710 a dit :

C'est bon pour le tuto jusqu'au bout avec un ndd chez OVH 😀

Au final, entre la création du certificat et le rajout de son renouvellement, il ne faut pas plus de 10 mn pour tout mettre en place.

Je vais maintenant me lancer dans mon ndd chez Gandi. Je ne connais pas encore leur API.

18. Use Gandi LiveDNS API

You must enable the new Gandi LiveDNS API first and the create your api key, See: http://doc.livedns.gandi.net/

export GANDI_LIVEDNS_KEY="fdmlfsdklmfdkmqsdfk"

Ok, let's issue a cert now:

acme.sh --issue --dns dns_gandi_livedns -d example.com -d www.example.com
Posté(e)

Je viens de faire le certificat pour mon ndd chez Gandi.

L'obtention de la clé API est assez simple, encore faut-il trouver comment. Une fois connecté sur le compte, on clique en haut à droite pour aller dans les paramètres du compte. On clique sur "Gérer les Apps autorisées", Onglet "Sécurité". On génère une clé API qu'on sauvegarde pour l'utiliser dans :

export GANDI_LIVEDNS_KEY="fdmlfsdklmfdkmqsdfk"

C'est la seule clé dont on a besoin.

Et pour créer le certificat :

acme.sh --issue --keylength 4096 --dns dns_gandi_livedns -d mondomaine -d *.mondomaine

Dans un premier temps, j'ai essayé d'utiliser le même conteneur que pour OVH, mais après la création du certificat, l'opération n'est pas allée jusqu'au bout. J'avais bien un dossier du nom de mon domaine dans le dossier Acme mais il était incomplet. Je l'ai supprimé pour ne pas être embêté pour la suite.

J'ai créé un autre conteneur afin de séparer le traitement des deux ndd. J'ai toutefois utilisé le même json, pour ne pas avoir 2 instances acme qui tournent séparément. Ceci a eu pour but de recréer un autre dossier comme précédemment, mais cette fois, la génération du domaine s'est bien déroulée.

Pour la suite, j'ai fait comme précédemment à savoir que je ne suis pas passé en ssh mais j'ai simplement utilisé le certificat pour en créer un nouveau directement dans DSM avec la clé et le certificat intermédiaire.

La partie mise à jour automatique dans DSM a été faite de la même manière que pour le certificat précédent.

Hormis l'obtention de la clé, la mise en oeuvre est encore plus courte que pour OVH car il n'y a qu'une valeur à indiquer pour l'API ai lieu de 3. J'ai du mettre moins de 10mn pour l'opération sur Docker.

Reste plus qu'à surveiller le bon renouvellement et la mise à jour auto des deux certificats.

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

Alors pour dsm 7, il faut savoir que la page login.cgi ne retourne plus de token, elle sera déprécier dans le futur avec dsm 7 et sa remplaçante authenticate.cgi attend son arrivée dans le guide développer afin d’avoir un script viable.

Posté(e)

Voilà avec la beta sortie, du nouveau concernant le certificat, il faudra passé par la conversion pem obligatoirement, comme avant 🙂 (édition du tutoriel)

Pour le hook, il arrive directement dans acme, je vous direz quand update le docker pour.

Alors oui je n'indique pas les modifications à faire, car cela obligera de taper en ssh en console dans docker pour importé le fichier modifier, on est pas à quelque jour prêt.

Pour information, certificat renouvelé sans soucis pour ma part avec alerte iffft pour me prévenir.

Posté(e) (modifié)

 

Citation

alerte iffft

Késako stp ?

 

Sinon pour ma part, MAJ de la Beta qui m'a fait revenir au départ de la Beta. Assez ironique en 2020...

Modifié par unPixel
Posté(e)

@unPixel C'est un gros un service qui permet de faire pas mal de chose, dans mon cas je l'utilise pour faire clignoté une ampoule de mon bureau si quelqu'un sonne à la sonnette Ring, du coup j'en est profité pour activé les webhook et recevoir une notification d'application au moment du renouvellement du certificat.

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

@Einsteinium bonjour,

cette nuit, renouvellement attendu de 3 domaines indépendants via acme.sh en docker, mis en place il y a 2 mois et dont la date de renouvellement était donc cette nuit

  • Sur les 3, 1 OK et 2 KO
  • pour les 2 KO
    • je précise tout de suite : pas de problème de clé chez OVH.
    • après analyse des logs entre le OK et les 2 KO, je constate que pour les 2 KO le log me dit qu'il trouve un subdomain "_acme-challenge.ndd.tld" , ce qui n'est pas le cas pour le domaine pour lequel le renouvellement est OK.

[Sun Dec 20 00:44:16 UTC 2020] _sub_domain='_acme-challenge'
[Sun Dec 20 00:44:16 UTC 2020] _domain='_acme-challenge.ndd.tld'
[Sun Dec 20 00:44:16 UTC 2020] Adding record
[Sun Dec 20 00:44:16 UTC 2020] domain/zone/_acme-challenge.ndd.tld/record
[Sun Dec 20 00:44:16 UTC 2020] GET
[Sun Dec 20 00:44:16 UTC 2020] url='https://eu.api.ovh.com/1.0/auth/time'
[Sun Dec 20 00:44:16 UTC 2020] timeout=30
[Sun Dec 20 00:44:16 UTC 2020] _CURL='curl --silent --dump-header /acme.sh/http.header  -L  -g  --connect-timeout 30'
[Sun Dec 20 00:44:16 UTC 2020] ret='0'
[Sun Dec 20 00:44:16 UTC 2020] _ovh_p='[hidden](please add '--output-insecure' to see this value)'
[Sun Dec 20 00:44:16 UTC 2020] data='{"fieldType":"TXT","subDomain":"_acme-challenge","target":"JKfeSWG7F4c5P7tqB7zbwHgktMBL_8za59AZROJ6NEE","ttl":60}'
[Sun Dec 20 00:44:16 UTC 2020] POST
[Sun Dec 20 00:44:16 UTC 2020] _post_url='https://eu.api.ovh.com/1.0/domain/zone/_acme-challenge.ndd.tld/record'
[Sun Dec 20 00:44:16 UTC 2020] _CURL='curl --silent --dump-header /acme.sh/http.header  -L  -g '
[Sun Dec 20 00:44:16 UTC 2020] _ret='0'
[Sun Dec 20 00:44:16 UTC 2020] Add txt record error.
[Sun Dec 20 00:44:16 UTC 2020] Error add txt for domain:_acme-challenge.ndd.tld

  • si maintenant je vais voir les zones DNS chez OVH, je m'aperçois que pour le domaine renouvellement OK il n'y a qu'un seul enregistrement TXT "_acme-challenge.ndd.tld", alors que pour les 2 domaines pour lesquels le renouvellement est KO, j'ai 4 enregistrements TXT "_acme-challenge.ndd.tld" avec 4 valeurs de clés différentes.
  1. n'y en t'il pas 3 de trop ?
  2. Est-ce pour cela qu'il pense détecter un sous-domaine _acme-challenge.ndd.tld ?
  3. faut'il les supprimer toutes les 4 ? ou juste 3 mais lesquelles ?

Si tu as quelques lumières sur le sujet , merci d'avance

Bruno78

 

Posté(e)

Rebonjour,

je réponds suite à essais complémentaires : c'est bien les records TXT _acme-challenge. XXX de la zone DNS qui bloquaient le processus. Une fois la zone nettoyée, ça roule ! (vieux records qui venaient sans doute d'essais préalables sans que le nettoyage ai été fait).

Donc j'ai renouvelé le deuxième domaine en lançant à la main le cron du docker acme. Et pour le troisième j'ai simplement fait le menage dans la zone DNS et je vais laisser passer le cron de façon automatique cette nuit. Et vérifier demain matin si tout est ok.

Posté(e)

Update du tutoriel, avec le code directement du conf, ainsi qu'en remplacement du json, le code pour la création et l'update du docker via le gestionnaire de tâche (perso je suis pas fan de Watchtower, un dock avec des privilèges élevés...), j'ai mis aussi directement les noms pour l'import manuel, afin que cela ne porte plus à confusion.

Posté(e) (modifié)

@Einsteinium merci pour cet update qui simplifiera la vie de certains. De mon côté, j'avais mis en place un lancement via docker-compose pour une machine non DSM, ... ça revient au même.

Je reviens au renouvellement automatique de mes domaines. Comme indiqué plus haut, le 3eme domaine a bien été renouvelé en auto cette nuit après avoir fait le ménage dans ma zone DNS (suppression des enregistrements TXT _acme-challenge.ndd.tld).

/!\ Par contre là où je me suis planté, c'est sur l'importation de ce certificat dans DSM7. Il s’agissait du domaine par défaut de mon DSM.

  • pour le prendre en compte, dans DSM7, j'ai fait "ajouter > remplacer un certificat existant" et donné les 3 fichiers demandés.
  • Resultat : 
    • config Webserver complétement plantée
    • re-installation complète de Webserver et recréation des virtuals hosts (le fichier /etc/nginx/sites-enable/server.webstation-vhost.conf avait disparu !)

Peut-être aurai-t’il fallu faire "ajouter un nouveau certificat" et migrer petit à petit les services sur ce nouveau certificat ? En tout cas c'est ce que je ferais pour la prochaine, dans 2 mois.

bruno78

PS : c'est d'ailleurs surement plutôt un problème DSM7 à mon avis

Modifié par bruno78
Posté(e)

Merci pour la mise à jour.

Moi c'est le fichier account.conf sur lequel j'ai eu un drôle de truc.

En vérifiant acme.sh.log, je me suis rendu compte que le dernier lancement journalier datait du 14 novembre....

Je suis allé voir account.conf et oh surprise, il était pratiquement vide : plus de clés, juste la première ligne LOG_FILE="/acme.sh/acme.sh.log" et UPGRADE_HASH='xxxxxxxxxxxxxxxxxxxxxxxxxxxxx'.

Je ne comprends pas ce qui a pu se passer car je n'ai pas souvenir d'avoir fait une quelconque modification depuis l'installation. Et je ne trouve rien dans les logs.

Heureusement, j'ai des sauvegardes Hyperbackup et j'ai pu restaurer le fichier. Reste à voir demain si le cron s'est lancé comme prévu.

Posté(e) (modifié)

Pour info, @Jeff777 a eu un souci de déploiement avec de le deploy_hook d'acme sur son NAS en DSM 7 alors que pour l'autre (en 6.2) il n'y a eu aucun souci.

J'ai pas eu le temps de lui demander beaucoup de détail (il est en vacances le veinard) mais si vous remarquez un problème similaire n'hésitez pas à balancer du log. 😄 

Modifié par .Shad.
Posté(e)
Le 21/12/2020 à 14:13, bruno78 a dit :

Par contre là où je me suis planté, c'est sur l'importation de ce certificat dans DSM7. Il s’agissait du domaine par défaut de mon DSM.

  • pour le prendre en compte, dans DSM7, j'ai fait "ajouter > remplacer un certificat existant" et donné les 3 fichiers demandés.

Bonjour , chez moi cette méthode a fonctionné avec les fichiers perm. Je ne sais pas si cela a une importance  mais j'ai donné le même nom au cetificat.

Posté(e)

Bonjour @Jeff777,

tu as fais l’opération sur une DSM6 ou une DSM7 ? et as-tu remplacer un certificat existant ? ou ajouter un nouveau certificat (même si avec le même nom) ?

Par ailleurs, lorsque j'ai fait l'importation du certificat, c'était avec les fichiers suivants issus directement du docker acme : eut'il fallu les transformer en .pem ????

image.png.b2d8dbf9aebbc53a33bfc3329e0245e1.png

je relis le post d'origine du tuto, .... et là je me dis que j'ai raté une marche ???? juste pas fait la transformation en .pem  ???? j'ai un gros gros doute ....

 

Posté(e) (modifié)

Pas facile internet pourri là où je suis.

@bruno78

Le script à marché sur mon Ds212 en dsm6. J'ai importé les .perm du dossier .......,,,/archive et les ai transférés sur le ds218 en DSM7 en faisant ajouter remplacer puis chargé les .perm  key, cert et chain.

Modifié par Jeff777
Posté(e)

Il n’y a pas encore le push du fichier pour dsm 7, si d’ici un mois il n’y a rien sur le git, je modifierais le tutoriel en rajoutant le fichier + une ligne de code afin de faire sa copie et écraser l’ancien dans le dock

Posté(e)
Le 21/12/2020 à 18:36, Mic13710 a dit :

En vérifiant acme.sh.log, je me suis rendu compte que le dernier lancement journalier datait du 14 novembre....

Je suis allé voir account.conf et oh surprise, il était pratiquement vide : plus de clés, juste la première ligne LOG_FILE="/acme.sh/acme.sh.log" et UPGRADE_HASH='xxxxxxxxxxxxxxxxxxxxxxxxxxxxx'.

Je ne comprends pas ce qui a pu se passer car je n'ai pas souvenir d'avoir fait une quelconque modification depuis l'installation. Et je ne trouve rien dans les logs.

Et bien je viens de trouver. J'ai fait la mise à jour de DSM le 14/11. Comme c'est la seule opération du jour, j'en déduis que c'est ce qui a interféré dans le processus de maj journalière.

Docker n'est pas si indépendant que ça de DSM et il faut aller vérifier après une mise à jour que tout fonctionne correctement sur Docker et en particulier que le fichier account.conf n'a pas été modifié.

Posté(e)

Hello tout le monde !

Mise en place de ce tuto à distance pendant les vacances sur un NAS DSM6.2

QUelques problèmes avec des erreurs de syntaxe dans le premier fichier conf, et également avec le terminal via reverse DNS. Au final, je suis moins habitué que les autres, entre tout j'ai dû bien mettre 1 à 2h y compris le réglage de mes soucis. J'attends le renouvellement automatique. Pour ma culture personnelle, quel est l'intérêt du déploiement auto ? 

@Einsteinium merci beaucoup pour ton tuto ! 

Posté(e)

@Mic13710 Ah mon avis tu as dû avoir une couille ailleurs, docker ne touche pas à son dossier volume lors des updates 🙂

Je vois sinon que de taper cette ligne dans l’interface visuelle est une vraie plaie, je vais éditer le tutoriel et faire encore de l’épuration et donner la ligne pour le faire via gestionnaire/ssh directement 🙂

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.