Auteur Sujet: Comment gerer les certificats Letsencrypt avec un reverse proxy ?  (Lu 1356 fois)

0 Membres et 1 Invité sur ce sujet

wvoodoo

  • Abonné Free fibre
  • *
  • Messages: 123
  • Vay 44
Bonjour les pros,

Dans l'attente de la fibre, je m'occupe et j'ai decidé de migrer mes 2 raspberry (Adguard et jeedom) vers des VMs de mon NAS. Histoire de reduire le nombre de cables / prises dans la baie et également m'affranchir des problèmes de cartes SD bref.

La conf en place est la suivante :
Freebox Revolution (bridge) <> UDM Pro <> QNAP TVS1282 <> Vms

J'utilise la fonctionnalité intégrée à QTS5 de reverse proxy, et tout ce petit monde fonctionne correctement, j'arrive à accéder à mes sites (Vms) en utilisant des noms de domaine prédéfinis.

Là où ça coince un peu, c'est que le Nas dispose de son propre certificat (xxx.myqnapcloud.com), et que mes VMs disposent de certificats letsencrypt. Du coup, quand je me connecte en SSL, le navigateur me sort un warning Cert_Invalid, car pour lui les deux noms ne correspondent pas (et il a raison).

La solution la plus simple, serait de prendre un certificat Wildcard et le mettre partout, mais je suis d'abord à la recherche d'une solution sans frais.

Merci d'avance si vous avez des idées.

proap

  • Abonné MilkyWan
  • *
  • Messages: 568
Comment gerer les certificats Letsencrypt avec un reverse proxy ?
« Réponse #1 le: 04 novembre 2021 à 10:51:18 »
Salut wvoodoo,

tu peux créer un domaine chez duckdns.org (par exemple) et utiliser CertBot pour générer les certificats et les signer auprès de LetsEncrypt:

https://certbot.eff.org/

Ensuite, il faut juste mettre en place un cronjob pour ne pas oublier le renouvellement.
EDIT: Ce n'était nécessaire que pour les premières versions (merci vivien)

Sinon, comme tu veux mettre en place un reverse-proxy, je te conseille vivement de regarder ce projet:
https://docs.linuxserver.io/general/swag

C'est un docker pour faire un reverse-proxy NGNIX avec plein de goodies et une génération de certificats complétement automatisée auprès de Let's Encrypt ou ZeroSSL
« Modifié: 04 novembre 2021 à 11:44:56 par proap »

wvoodoo

  • Abonné Free fibre
  • *
  • Messages: 123
  • Vay 44
Comment gerer les certificats Letsencrypt avec un reverse proxy ?
« Réponse #2 le: 04 novembre 2021 à 11:33:37 »
Merci, je vais regarder cela avec attention.

En attendant, j'ai trouvé la solution.
Sur le Qnap, je peux remplacer le certificat d'origine par un letsencrypt, et surtout je peux lui donner des noms alternatifs.
Du coup, mon nas est accessible via XXX.mondomaine.com, mon jeedom sous jeedom.mondomaine.com et ainsi de suite.

une bonne chose de faite :)

vivien

  • Administrateur
  • *
  • Messages: 47 168
    • Twitter LaFibre.info
Comment gerer les certificats Letsencrypt avec un reverse proxy ?
« Réponse #3 le: 04 novembre 2021 à 11:35:03 »
Bonjour depuis plusieurs années, si on installe Cerbot en suivant la documentation sur https://certbot.eff.org/ le renouvellement est bien automatique.

Le rajout manuellement dans la crontab n'était nécessaire que les premiers mois.

testing5555

  • Abonné Bbox fibre
  • *
  • Messages: 548
  • Lyon 3 (69)
Comment gerer les certificats Letsencrypt avec un reverse proxy ?
« Réponse #4 le: 04 novembre 2021 à 16:36:04 »
Letsencrypt gère aussi gratuitement les wildcard, c'est juste un mécanisme de vérification différent (challenge DNS au lieu du http)
https://letsencrypt.org/docs/faq/#does-let-s-encrypt-issue-wildcard-certificates

proap

  • Abonné MilkyWan
  • *
  • Messages: 568
Comment gerer les certificats Letsencrypt avec un reverse proxy ?
« Réponse #5 le: 04 novembre 2021 à 17:17:31 »
Letsencrypt gère aussi gratuitement les wildcard, c'est juste un mécanisme de vérification différent (challenge DNS au lieu du http)
https://letsencrypt.org/docs/faq/#does-let-s-encrypt-issue-wildcard-certificates

Je suis sûr que le 'wildcard domain' peut être validé via http également. Je suis sur cloudflare et du coup j'utilise la méthode DNS mais quand j'avais un domaine chez duckdns je faisais la validation via http et j'avais tout de même des sous-domaines valides. La seule contrainte était qu'il fallait choisir entre son domaine principal ou wildcard. On ne pouvait pas avoir un certificat valide pour les 2 cas de figure.

wvoodoo

  • Abonné Free fibre
  • *
  • Messages: 123
  • Vay 44
Comment gerer les certificats Letsencrypt avec un reverse proxy ?
« Réponse #6 le: 05 novembre 2021 à 10:32:45 »
Merci pour toutes ces réponses.

Il y a un souci avec le reverse proxy de Qnap apparemment, qui ne gère pas correctement les certificats intermédiaire.

En clair, si je redirige les ports 80 et 443 du routeur directement sur le NAS, le certificat cité plus haut est détecté comme correct (incluant Racine et intermédiaire)

Par contre, si je redirige vers le reverse proxy et ensuite vers le NAS (pour test), les certificats Racine et Intermédiaire sont détectés comme expirés.

J'étais avec le support Qnap toute la journée hier, et finalement un rapport de bug a été soumis, le tech ne voyait pas non plus pourquoi cela ne fonctionnait pas.

proap

  • Abonné MilkyWan
  • *
  • Messages: 568
Comment gerer les certificats Letsencrypt avec un reverse proxy ?
« Réponse #7 le: 05 novembre 2021 à 10:45:36 »
Merci pour toutes ces réponses.

Il y a un souci avec le reverse proxy de Qnap apparemment, qui ne gère pas correctement les certificats intermédiaire.

En clair, si je redirige les ports 80 et 443 du routeur directement sur le NAS, le certificat cité plus haut est détecté comme correct (incluant Racine et intermédiaire)

Par contre, si je redirige vers le reverse proxy et ensuite vers le NAS (pour test), les certificats Racine et Intermédiaire sont détectés comme expirés.

J'étais avec le support Qnap toute la journée hier, et finalement un rapport de bug a été soumis, le tech ne voyait pas non plus pourquoi cela ne fonctionnait pas.

Il est normal de voir les certificats comme étant non valides, par contre expirés c'est effectivement bizarre.
Si les cerficats installés sur le NAS Qnap correspondent à ceux de ton domaine extérieur (ex. mondomaine.fr) lors qu'un reverse proxy sur ton LAN se connecte en HTTPS à Qnap, il va voir un certificat qui ne correspond pas à l'adresse/domaine utilisée. Soit tu utilises une connexion proxy en HTTP si ton LAN est de confiance, soit tu gardes la connexion proxy HTTPS mais tu autorises l'utilisation de certificats 'self-signed'. L'important est que ton reverse-proxy dispose des bons certificats pour tes domaines extérieurs.

vivien

  • Administrateur
  • *
  • Messages: 47 168
    • Twitter LaFibre.info
Comment gerer les certificats Letsencrypt avec un reverse proxy ?
« Réponse #8 le: 05 novembre 2021 à 11:00:11 »
On a deux chaînes de certification, dont une qui est expirée depuis le 1er octobre (DST Root CA X3).

Cf le sujet dédié : 1er octobre 2021: nombreux changements pour Let's Encrypt

Le certificat expiré est utilisé par Android 7.0 et inférieur (Android ne vérifie pas la date, ce qui sauve 1/3 des smartphone d'une mort certaine) et il y a en effet des problèmes avec des composants Linux qui sont en échec a cause de cette expiration (il ne testent pas la seconde chaîne de certification qui est valide). La solution est de retirer le certificat expiré DST Root CA X3 du système. On en parle ici

Ce qui est gênant, c'est l'opposition entre les vieilles versions d'Android et OpenSSL 1.0.2.

Si le serveur envoie le ISRG Root X1 signé par DST Root CA X3 :
 - Les vielles versions d'Android contiennent la racine DST Root CA X3, et ne vérifient pas son expiration, donc ça passe.
 - Si la racine DST Root CA X3 est embarquée, OpenSSL 1.0.2 voit la chaîne avec une racine expirée et refuse, même si la racine ISRG Root X1 est présente.

Si le serveur envoie le ISRG Root X1 racine (ou juste le reste de la chaîne) :
 - Les vielles versions d'Android n'embarquent pas la racine ISRG Root X1, donc la chaîne est invalide.
 - OpenSSL 1.0.2 fonctionne si la racine ISRG Root X1 est embarquée.
Si on regarde les dépendances, apt utilise GnuTLS.
GnuTLS avait un bug similaire à OpenSSL 1.0.2, ça a été corrigé en 3.6.14.
Pas de chance, Ubuntu 20.04 a toujours GnuTLS 3.6.13.

wvoodoo

  • Abonné Free fibre
  • *
  • Messages: 123
  • Vay 44
Comment gerer les certificats Letsencrypt avec un reverse proxy ?
« Réponse #9 le: 05 novembre 2021 à 11:39:22 »
Oui, les certificats sur le NAS sont bien à jour, la dernière MAJ avait justement ce but.

Concernant le fait de voir les certificats invalides depuis le reseau local, je suis bien d'accord, là je parle d'un accès extérieur, en utilisant le domaine.

La vérification est faite via https://www.sslchecker.com/sslchecker

Edit: Pour donner un peu de contexte, le but est de faire fonctionner Jeedom avec Alexa. Et pour cela, Jeedom doit être accessible de l'exterieur en 443 via un nom de domaine. Et Amazon est tréééés sensible sur les certificats.
Je n'ai pas d'avertissement dans le navigateur lorsque SSL checker me dit que les intermédiaires et root son expirés. Mais Alexa refuse la connexion avec Jeedom. Lorsque je passe en direct, les certificats sont OK et Alexa fonctionne sans problème.