Certificats wildcard let's encrypt avec nginx proxy manager sur domaine chez OVH

Juste un petit tuto demandé ici : Home Assistant Companion Android - #23 par Clemalex . Je préviens, c’est assez spécifique.

Le but est d’avoir des certificats wildcard avec let’s encrypt plutôt qu’un certificat pour chaque sous domaine créé. C’est à dire une validation de *.mondomaine.fr plutôt que chaque sous domaine créé.

Je ne détaillerai pas les étapes pour l’accès extérieur, c’est ici qu’il faut se renseigner : ✅ Accès de l’extérieur en HTTPS avec Nginx Proxy Manager

Il faut posséder un nom de domaine chez OVH. Il pourra surement être adapté chez d’autre registrar mais je n’ai testé que le mien.

Si vous avez suivie le tuto pour l’accès à l’extérieur, vous pouvez substituer la partie « passage en https » par ce qui suis.

Première chose à faire, créer les accès sur l’API OVH, se rendre ici : OVH Developers : Discover OVH products API & functions - OVH
et remplir le formulaire :


Bien penser à passer utiliser le compte qui gère le domaine, la validité en Unlimited et remplir les droits de GET/PUT/POST/DELETE en /domain/zone/*.

Après la création des clés vous aurez 3 infos:

  • Application Key
  • Application Secret
  • Consumer Key

penser à bien les noter quelque part.

se rendre ensuite sur l’interface de nginx proxy manager, partie ssl :

et cliquer sur « Add SSL Certificats » > Let’s encrypt :

Remplir dans domain names le nom de domaine votre nom de domaine et votre nom de domaine précédé de « *. ».
Passer en DNS Challenge et choisir le DNS provider en OVH.
Remplir : Application Key, Application Secret, Consumer Key créé plus tôt.
Laisser le temps de propagation vide, le temps par défaut est suffisant. Un petit consentement et Save.
On laisse le temps de la validation est c’est tout bon. On a un joli certificat valide.

Il suffit de reprendre le tuto pour l’accès à l’extérieur et au moment de l’édition sélectionner le certificat ssl créé plutôt que de faire une demande de certificat.

2 « J'aime »

Bonjour,
je tente de réaliser l’intégration de certificats wildcard OVH sur nginx proxy manager. J’ai bien créé les clés, mais je bloque sur l’interface nginx proxy manager qui n’est pas la même que celle que tu présentes ici, je ne trouve pas le menu SSL certificates tel que présenté dans le tuto…
Peux-tu m’éclairer ?
merci d’avance

Il n’apparaît pas depuis un mobile seulement depuis un ordinateur (le mode bureau ne le rend pas visible non plus)

OK, je viens de changer de navigateur, ça ne fonctionne pas sur Firefox, mais c’est OK sur EDGE.
Je poursuis l’install…

5 messages ont été fusionnés à un sujet existant : Pas d’accès vers l’extérieur

Nouvel état de situation…

ça a légèrement progressé, mais on n’est pas encore au bout ! :slight_smile:

Positif
J’ai mis à jour l’@IP dans la zone http de config.yaml avec l’IP du host HA.
Au niveau de Nginx, si je redirige le port 443 vers le port 81,
1/ en cliquant sur le nom de domaine, je reviens bien sur la page Nginx
2/ en connexion externe, j’aboutis bien également sur la page de connexion Nginx, et lorsque je rentre mes identifiants Nginx, ça fonctionne, je rentre sur les pages de config des hôtes.

Ne fonctionne toujours pas :

1/ Sur le tuto wildcard, je n’arrive pas à ajouter le certificat wildcard. (internal error).
« Error determining zone identifier for mondomaine.fr: 403 Client Error: Forbidden for url: https://eu.api.ovh.com/1.0/domain/zone/. (Are your Application Key and Consumer Key values correct?) »
J’ai vérifié et revérifié les keys, tout a l’air bon de mon côté. Lorsque j’ai fait ma demande de clés sur le site OVH, je n’ai mis que le nom de domaine, sans /zone. Est-ce ce qui bloque ? Si oui, que faudrait-il mettre comme zone ?

2/ Après re-modification sur Nginx de la redirection du domaine vers 8123, quand je tente une connexion externe j’arrive bien sur la page NGINX Proxy Manager « login to your account », mais là, impossible de se connecter ni avec les identifiants Nginx, ni avec les identifiants HA. Aucun message d’erreur, ça reste dans le vide… comme s’il n’y avait pas de communication interne entre Nginx et HA.

Questions :

Peut-on abandonner wildcard et revenir à du simple SSL ?
Y-aurait-il quelque chose à faire du côté OVH pour inhiber les certificats wildcard, parce que comme ça, ça ne marche pas ?

Pour le petit 1.

Quand il faut marquer domain/zone/*. C’est vraiment qu’il faut marquer ça a la lettre près. Pour donner les droits de modification sur tes domaines par l’api. Ne remplace pas domain par ton nom de domaine.

Merci Babidi, j’avais effectivement mis mon nom de domaine avec * sur la demande de token.
Du coup, je suis retourné sur le site OVH j’ai refait la manip pour créer un nouveau token, mais là ça bloque encore avec l’erreur suivante : « Error: An application with that name already exists » , ce qui est normal puisque j’avais créé un token pour mon nom de domaine. Par contre je ne trouve pas sur le site la façon de supprimer les tokens existants … une idée ?
Merci pour ton aide. (je te proposerai quelques compléments du tuto avec l’expérience)…

@Babidi

j’ai refait la procédure OVH avec en script name « proxy1 » (je n’ai pas trouvé comment supprimer les tokens pour « proxy »)). Puis relancé « Add Let’s Encrypt Certificate » sur Nginx avec les nouveaux tokens, et, de nouveau une erreur interne, mais pas la même, ci dessous :

"Error: Command failed: /usr/bin/certbot certonly --non-interactive --cert-name « npm-15 » --agree-tos --email « xxx@xxx.fr » --domains « *.xxx.fr » --authenticator dns-ovh --dns-ovh-credentials « /etc/letsencrypt/credentials/credentials-15 »
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator dns-ovh, Installer None
Performing the following challenges:
dns-01 challenge for xxx.fr
Cleaning up challenges
Encountered exception during recovery: TypeError: delete_record() got an unexpected keyword argument ‹ type ›
An unexpected error occurred:
TypeError: create_record() got an unexpected keyword argument ‹ type ›
Please see the logfiles in /var/log/letsencrypt for more details.

at ChildProcess.exithandler (child_process.js:308:12)
at ChildProcess.emit (events.js:315:20)
at maybeClose (internal/child_process.js:1048:16)
at Socket. (internal/child_process.js:439:11)
at Socket.emit (events.js:315:20)
at Pipe. (net.js:673:12)

Lorsque je vais voir le fichier log indiqué (/var/log/letsencrypt), il n’existe pas. En regardant de plus près au niveau du superviseur, le add-on Let’s Encrypt n’est pas démarré.

Faut-il qu’il soit démarré ?

Quand j’essaye de le démarrer, j’ai l’erreur suivante :

Echec du démarrage de l’extension Port ‹ 80 › is already in use by something else on the host.

J’avoue ne plus y voir très clair…
Merci de vos lumières, s’il y en a de possibles :slight_smile:

:warning: Tu commences à mélanger les choses :slightly_smiling_face:

Nginx proxy manager embarque let’s encrypt, donc tu n’as pas besoin de l’add-on let’s encrypt.

Nginx proxy manager utilise déjà le port 80 d’où le message d’erreur.

Ensuite, tu peux suivre le tutoriel sur Nginx Proxy manager jusqu’au bout pour avoir un certificat pour chaque domaine, sous-domaine (si tu pars la desssus, continue la rédaction de tes messages là-bas).

OK, merci, ça n’était pas clair pour moi que let’s encrypt était embarqué nativement dans Nginx.
Comme je ne m’en sors pas avec les certificats wildcard, je rebascule sur le tuto Nginx Proxy Manager en certificat ssl simple, (mais je crains aussi qu’il y ait un problème de compatibilité TLS/SSL). Je vérifie et au besoin je switch sur l’autre discussion.

Si tu veux supprimer le token pour « proxy » tu peux passer par l’api ovh dispo ici :

https://eu.api.ovh.com/

C’est pas forcement « user friendly » mais c’est faisable :wink:

Merci Herbs,
oui j’ai tenté de le faire en utilisant la commande " Delete /domain/zone/{zoneName}/dnssec" je l’ai lancée, mais le résultat ne semble pas immédiat. Peut-être normal ?

Hum de mémoire c’est instantané, mais je ne suis pas certain que tu ais envoyé la bonne commande.

J’avais pris quelques notes le jour en j’en ai eu besoin mais j’ai un doute vu que ça fait un bout de temps maintenant. Je les mets quand même :wink:

get  /me/api/application  ### tu récupères les ids de tes applis (api ovh)

get  /me/api/credential/{credentialId}  ### tu obtiens le détails de l'application, tu vois si ça match avec celle que tu veux supprimer.

delete  /me/api/credential/{credentialId}  ### tu supprimes l'application que tu auras choisi.

Si je peux j’essaierai de faire un tour sur leur api dans la soirée de lundi pour voir si ça me revient.

ok, merci… j’avoue y être allé un peu au pif, comme tu dis, ce n’est pas très « user friendly »… :wink:

Je viens de modifier mon post, j’ai pas pu m’empêcher d’aller faire un tour dès ce soir sur l’api.

Normalement je dois pas être loin de la vérité, mais c’est l’heure d’aller se coucher :stuck_out_tongue: