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

Hello,

Merci pour ce tuto @Einsteinium.

Désolé pour le retour tardif, j'avais téléchargé les fichiers mais je n'avais pas pris le temps de faire les manipulations.

J'ai un soucis, il me semble que j'ai mal copié les valeurs de la clés API ...

error {"message":"This credential is not valid","httpCode":"403 Forbidden","errorCode":"INVALID_CREDENTIAL"}

Je ne trouve pas de page sur OVH API pour gérer ces clés API, soit supprimer celle que j'ai faite précédemment, soit récupérer les credentials. J'aimerai éviter dans refaire une autre tout en gardant l'ancienne active.

Autre question, comment je peux rendre me servir de ces certificats sur mon routeur RT2600AC ?

Merci

Modifié par Skylnex
Posté(e)
il y a une heure, Skylnex a dit :

Je ne trouve pas de page sur OVH API pour gérer ces clés API, soit supprimer celle que j'ai faite précédemment, soit récupérer les credentials. J'aimerai éviter dans refaire une autre tout en gardant l'ancienne active.

Il y a sûrement plus simple, mais je n'ai pas non plus trouvé comment visualiser les clés OVH existantes... Mon astuce : je passe par l'interface de description et de test des instructions API : https://api.ovh.com/console/

Une fois connecté, tu pourras interroger la méthode "auth" pour retrouver tes crédentials.

Bon courage !

Posté(e)
Il y a 2 heures, Skylnex a dit :

Hello,

Merci pour ce tuto @Einsteinium.

Désolé pour le retour tardif, j'avais téléchargé les fichiers mais je n'avais pas pris le temps de faire les manipulations.

J'ai un soucis, il me semble que j'ai mal copié les valeurs de la clés API ...



error {"message":"This credential is not valid","httpCode":"403 Forbidden","errorCode":"INVALID_CREDENTIAL"}

Je ne trouve pas de page sur OVH API pour gérer ces clés API, soit supprimer celle que j'ai faite précédemment, soit récupérer les credentials. J'aimerai éviter dans refaire une autre tout en gardant l'ancienne active.

Autre question, comment je peux rendre me servir de ces certificats sur mon routeur RT2600AC ?

Merci

Sur la première page ^^ et aussi @MagJ du coup.

Le 21/10/2020 à 10:29, Einsteinium a dit :

@bruno78 Après tu peux delete les api sans soucis si c'est le problème : https://api.ovh.com/console/#/me/api/application#GET

(En dessous tu as le delete et encore en dessous pour voir le détail d'une api et savoir laquelle supprimée)

Pour le RT dans le tutoriel je donne la conversion à faire pour après injecter dans le RT comme pour le dsm

Posté(e)

@Einsteinium@MagJ@Skylnex bonjour,

j'avoue avoir été un peu fainéant, et avoir créé de nouvelles clés sans avoir effacé les anciennes. Ce n'est pas très propre, ... mais ça ne pose aucun soucis.

Par ailleurs, j'ai pu mettre en œuvre relativement facilement la solution de notification par mail basée sur le service sendgrid.com. Ce n'est pas la configuration du docker qui est compliquée (très bien expliquée là https://github.com/acmesh-official/acme.sh/wiki/notify ) 

C'est la configuration du compte sendgrid.com qui est un peu "pénible" car ils demandent pas mal d'infos (bon on rentre ce qu'on veut, d'accord) , et ensuite ils poussent fortement à utiliser la double authentification pour l'accès à son compte sendgrid.com (basée sur l'application Authy).

En ce qui concerne la génération de l'API sendgrid.com, on peut restreindre au maximum les droits sur cet API pour n'utiliser que ce dont on a besoin, à savoir l'envoi de mail.

Au niveau de l'API, on choisit "restricted access"

image.png.67b7c6baff34f7f6445c85d599416b98.png

Puis on choisit uniquement "Mail Send"

image.png.a9d5232dd426d1db899d47d6c9629bf9.png

 

Cdt

Bruno78

Posté(e) (modifié)

Re, j'ai finalement regénéré une clé. Mais j'ai une erreur comme moi mon domaine est invalide ... Mon domaine pointe bien vers mon IP, je ne sais pas si je dois faire quelque chose de plus coté OVH.

[Sat Oct 24 17:04:18 UTC 2020] Using CA: https://acme-v02.api.letsencrypt.org/directory                                                                                                                                                                                                     
[Sat Oct 24 17:04:19 UTC 2020] Multi domain='DNS:mondomaine.com,DNS:*.mondomaine.com'                                                                                                                                                                                                           
[Sat Oct 24 17:04:19 UTC 2020] Getting domain auth token for each domain                                                                                                                                                                                                                    
[Sat Oct 24 17:04:21 UTC 2020] Getting webroot for domain='mondomaine.com'                                                                                                                                                                                                                    
[Sat Oct 24 17:04:22 UTC 2020] Getting webroot for domain='*.mondomaine.com'                                                                                                                                                                                                                  
[Sat Oct 24 17:04:22 UTC 2020] Adding txt value: n4TPKBGWMqxcqa9FCCMWeNQvKJhTdls8UjrVH5zDnXQ for domain:  _acme-challenge.mondomaine.com                                                                                                                                                      
[Sat Oct 24 17:04:22 UTC 2020] Using OVH endpoint: ovh-eu                                                                                                                                                                                                                                   
[Sat Oct 24 17:04:22 UTC 2020] Checking authentication                                                                                                                                                                                                                                      
[Sat Oct 24 17:04:22 UTC 2020] Consumer key is ok.                                                                                                                                                                                                                                          
[Sat Oct 24 17:04:22 UTC 2020] invalid domain                                                                                                                                                                                                                                               
[Sat Oct 24 17:04:22 UTC 2020] Error add txt for domain:_acme-challenge.mondomaine.com                                                                                                                                                                                                        
[Sat Oct 24 17:04:22 UTC 2020] Please check log file for more details: /acme.sh/acme.sh.log    

Et bien sur les logs ne sont pas du tout parlant.

 

Merci

 

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

Oui j'ai bien saisie la commande en remplaçant par mon nom de domaine.

Coté OVH voici ce que j'ai en enregistrement A :

 

Screenshot_2020-10-24 Votre espace client Web OVHcloud.png

Modifié par Skylnex
Posté(e)

C'est bon j'ai réussi ! Surement la une erreur coté API ...

J'ai trouvé comment gérer ces accès à l'application, c'est ici https://api.ovh.com/console/. Ensuit une fois connecté, on peut accéder à ces applications générées via

/me/api/application

et on peut ensuite supprimer une application avec :

/me/api/application/{applicationId}#DELETE

Je n'ai malheureusement pas trouvé comment voir les credentials pour une application. Donc j'ai supprimé et recréé.

Merci pour votre temps et le tuto 🙂

Posté(e)

J'ai suivi le tuto et j'ai rencontré un problème pour accéder au terminal.

La faute à la connexion à Docker via un ndd. En utilisant l'IP, pas de problème.

Pour pouvoir utiliser un ndd, il faut paramétrer dans le reverse proxy le websocket du dit ndd. Merci @Einsteinium pour l'astuce.

Une fois ce problème réglé, la création du certificat n'a pas pris plus de 5mn.

Je n'ai pas fait l'installation via ssh comme indiqué mais j'ai simplement importé le certificat dans dsm.

Reste à faire l'automatisation de l'installation.

Posté(e)

C'est pas gagné.

Tout d'abord il y a une erreur dans le tuto :

il faut supprimer le "./" dans :

./acme.sh --deploy --home . -d "mydomain.com" --deploy-hook synology_dsm

sinon il y a le message "access denied to acme.sh". acme.sh est dans la racine du dossier acme, on ne va pas le chercher plus loin.

Ensuite, j'ai créé un compte admin en accès réduit et sans double authentification pour le renouvellement du certificat.

Le process se lance mais ne peut aboutir car il n'arrive pas à se connecter au localhost:5000

[Fri Oct 30 10:40:20 UTC 2020] url='http://localhost:5000/webman/login.cgi?username=monusername&passwd=monmdp&enable_syno_token=yes&device_id='
[Fri Oct 30 10:40:20 UTC 2020] timeout=
[Fri Oct 30 10:40:21 UTC 2020] _CURL='curl -L --silent --dump-header /acme.sh/http.header  -g '
[Fri Oct 30 10:40:21 UTC 2020] Please refer to https://curl.haxx.se/libcurl/c/libcurl-errors.html for error code: 7
[Fri Oct 30 10:40:21 UTC 2020] ret='7'
[Fri Oct 30 10:40:21 UTC 2020] token
[Fri Oct 30 10:40:21 UTC 2020] Unable to authenticate to localhost:5000 using http.
[Fri Oct 30 10:40:21 UTC 2020] Check your username and password.
[Fri Oct 30 10:40:21 UTC 2020] Error deploy for domain:mondomaine
[Fri Oct 30 10:40:21 UTC 2020] Deploy error.

Je ne pense pas qu'il y ait un pb avec l'utilisateur qui a les droits admin.

 

Posté(e)

@Mic13710

Quand tu écris "localhost" dans un conteneur, ça concerne le conteneur, et pas l'hôte.
Pour joindre l'hôte, si tu es en bridge, tu te connectes en SSH (root) sur le NAS et tu tapes :

docker inspect <nom_du_conteneur>

A la fin du fichier tu as un champ "Gateway", ça te donne l'IP de la passerelle (donc l'hôte, donc le NAS ici). Si tu remplaces localhost par cette IP ça devrait théoriquement fonctionner. Sinon tu peux utiliser le nom DNS de ton NAS ou son IP dans ton LAN, les requêtes qu'un conteneur ne peut pas résoudre sont transmises à son hôte.

Posté(e)

Merci à tous les deux.

Il y a un mieux. Le script se connecte bien avec le hostname mais il ne trouve pas le certificat.

[Fri Oct 30 13:58:28 UTC 2020] Logging into 172.17.0.1:5000
[Fri Oct 30 13:58:29 UTC 2020] GET
[Fri Oct 30 13:58:29 UTC 2020] url='http://172.17.0.1:5000/webman/login.cgi?username=monutilisateur&passwd=monmotdepasse&enable_syno_token=yes&device_id='
[Fri Oct 30 13:58:29 UTC 2020] timeout=
[Fri Oct 30 13:58:29 UTC 2020] _CURL='curl -L --silent --dump-header /acme.sh/http.header  -g '
[Fri Oct 30 13:58:30 UTC 2020] ret='0'
[Fri Oct 30 13:58:30 UTC 2020] token='xxxxxxxxxxxxx'
[Fri Oct 30 13:58:30 UTC 2020] Getting certificates in Synology DSM
[Fri Oct 30 13:58:30 UTC 2020] POST
[Fri Oct 30 13:58:30 UTC 2020] _post_url='http://172.17.0.1:5000/webapi/entry.cgi'
[Fri Oct 30 13:58:30 UTC 2020] _CURL='curl -L --silent --dump-header /acme.sh/http.header  -g '
[Fri Oct 30 13:58:31 UTC 2020] _ret='0'
[Fri Oct 30 13:58:31 UTC 2020] Unable to find certificate: mondomaine and $SYNO_Create is not set
[Fri Oct 30 13:58:31 UTC 2020] Error deploy for domain:mondomaine
[Fri Oct 30 13:58:31 UTC 2020] Deploy error.

 

 

Posté(e)

Bon, j'ai trouvé d'où vient l'erreur. Comme je ne veux renouveler qu'un seul certificat, je l'ai indiqué dans le script. Mais en fait, il ne faut pas indiquer le nom de domaine mais uniquement sa description dans DSM.

A supposer que ma description soit "Mon certificat à moi", la ligne export SYNO_Certificate doit être égale = "Mon certificat à moi"

J'ai fait cette modif et le certificat s'est renouvelé sans problème. A voir lors du prochain renouvellement si c'est OK.

Voici le log :

[Fri Oct 30 14:25:42 UTC 2020] Running cmd: deploy
[Fri Oct 30 14:25:42 UTC 2020] Using config home:/acme.sh
[Fri Oct 30 14:25:42 UTC 2020] default_acme_server
[Fri Oct 30 14:25:42 UTC 2020] ACME_DIRECTORY='https://acme-v02.api.letsencrypt.org/directory'
[Fri Oct 30 14:25:42 UTC 2020] DOMAIN_PATH='/acme.sh/mondomaine'
[Fri Oct 30 14:25:42 UTC 2020] _deployApi='/root/.acme.sh/deploy/synology_dsm.sh'
[Fri Oct 30 14:25:42 UTC 2020] _cdomain='mondomaine'
[Fri Oct 30 14:25:42 UTC 2020] SYNO_Certificate='Mon certificat à moi'
[Fri Oct 30 14:25:42 UTC 2020] _base_url='http://172.17.0.1:5000'
[Fri Oct 30 14:25:42 UTC 2020] Logging into 172.17.0.1:5000
[Fri Oct 30 14:25:42 UTC 2020] GET
[Fri Oct 30 14:25:42 UTC 2020] url='http://172.17.0.1:5000/webman/login.cgi?username=nomutilisateur&passwd=monmdp&enable_syno_token=yes&device_id='
[Fri Oct 30 14:25:42 UTC 2020] timeout=
[Fri Oct 30 14:25:42 UTC 2020] _CURL='curl -L --silent --dump-header /acme.sh/http.header  -g '
[Fri Oct 30 14:25:44 UTC 2020] ret='0'
[Fri Oct 30 14:25:44 UTC 2020] token='xxxxxxxxxxxx'
[Fri Oct 30 14:25:44 UTC 2020] Getting certificates in Synology DSM
[Fri Oct 30 14:25:44 UTC 2020] POST
[Fri Oct 30 14:25:44 UTC 2020] _post_url='http://172.17.0.1:5000/webapi/entry.cgi'
[Fri Oct 30 14:25:44 UTC 2020] _CURL='curl -L --silent --dump-header /acme.sh/http.header  -g '
[Fri Oct 30 14:25:44 UTC 2020] _ret='0'
[Fri Oct 30 14:25:44 UTC 2020] Generate form POST request
[Fri Oct 30 14:25:44 UTC 2020] Upload certificate to the Synology DSM
[Fri Oct 30 14:25:44 UTC 2020] POST
[Fri Oct 30 14:25:44 UTC 2020] _post_url='http://172.17.0.1:5000/webapi/entry.cgi?api=SYNO.Core.Certificate&method=import&version=1&SynoToken=xxxxxxxxxxxxx'
[Fri Oct 30 14:25:44 UTC 2020] _CURL='curl -L --silent --dump-header /acme.sh/http.header  -g '
[Fri Oct 30 14:26:50 UTC 2020] _ret='0'
[Fri Oct 30 14:26:50 UTC 2020] http services were restarted
[Fri Oct 30 14:26:50 UTC 2020] [1;32mSuccess[0m

Edit :

Je viens de vérifier mes certificats dans /usr/local/etc/certificate et je confirme que les maj se sont faites sans problème. Ca devrait donc être OK pour le renouvellement dans deux mois.

 

Posté(e)
il y a 4 minutes, Einsteinium a dit :

C'était mis

Je suis d'accord, mais ce n'est pas le nom du domaine qu'il faut mettre. C'est sa description qui est en fait le nom du certificat tel que le connait DSM.

Posté(e)

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.

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.