• Applications
  • [Question] Let's Encrypt : un seul domaine heberge par deux serveurs

Salut a tous,

Je suis en train de mettre en place 2 serveurs et j'arrive a la partie web. L'idee est d'avoir un seul domaine (qu'on va appeler domaine.fr) heberge par 2 serveurs (qu'on va appeler serv1 et serv2). Pour le load balancing j'utilise tout simplement les entrees DNS dans Bind (je sais c'est pas du vrai load balancing et il n'y a pas moyen de connaitre la charge d'un serveur avant de rediriger la requete mais pour l'instant ca me va) :

domaine.fr IN A 1.1.1.1
domaine.fr IN A 1.1.1.2
serv1.domaine.fr IN A 1.1.1.1
serv2.domaine.fr IN A 1.1.1.2

Et je voudrais passer au https puisque Let's Encrypt distribue des certificats (sympa de leur part).
Je voudrais donc un certificat pour domaine.fr, un certificat pour serv1.domaine.fr et un certificat pour serv2.domaine.fr ou mieux un seul certificat pour ces 3 domaines/sous-domaines.
Et c'est la que je "bloque".
Qu'elle serait la meilleur facon d'obtenir un certificat pour les 3 (ou un certificat pour chacun). J'ai penser a ca mais peut etre qu'il y a une meilleure methode :
Je devrais supprimer temporairement la resolution "domaine.fr IN A 1.1.1.2" pour que la requete arrive a 1.1.1.1 sur lequel je lance la commande d'obtention du certificat (mais uniquement pour domaine.fr et serv1.domaine.fr, car serv2.domaine.fr ne pourra pas etre verifie), et une nouvelle commande sur serv2.domaine.fr pour ce sous-domaine.
Ensuite je doit copier le certificat pour domaine.fr obtenu par serv1 sur serv2 et remettre la ligne "domaine.fr IN A 1.1.1.2" pour qu'ainsi la resolution se fasse egalement sur serv2.
Par contre pour le renouvellement ca peut etre penible (surtout qu'il faut renouveller dans moins de 90 jours).
Le probleme se presente surtout pour domaine.fr (serv1.domaine.fr et serv2.domaine.fr pointent chacun sur une ip unique et ca devrait pas trop poser de probleme pour l'obtention et le renouvellement pour ces 2 sous-domaines).

Donc la question (en schematisant) :

Comment faire pour avoir de maniere simple 3 certificats (domaine.fr, serv1.domaine.fr, serv2.domaine.fr) sachant que domaine.fr est heberge par 2 serveurs (donc partage du certificat domaine.fr entre les 2 serveurs) et bien evidemment automatiser le renouvellement de ces 3 certificats sans trop se prendre la tete...

Merci

EDIT: J'ai cree un tuto a ce sujet qui peut etre trouve ici.

Bonjour,

A confirmer mais je crois qu'en l'état actuel des choses les certificats let's encrypt se basent sur une seule ip donc je suis pas sûr que tu puisses mettre en place un certificat.
Source : Let’s Encrypt IPs
@Ikoula
Il ne me semble pas avoir lu dans l'article du lien, que let's encrypt ne marche qu'avec une seule ip. Par contre je te remercie d'avoir partage ce lien car ca m'a permis de lire ca :
If you want to use the http-01 challenge anyhow, you may want to take advantage of HTTP redirects. You can set up each of your frontends to redirect /.well-known/acme-validation/XYZ to validation-server.example.com/XYZ for all XYZ. This delegates responsibility for issuance to validation-server, so you should protect that server well.
Et grace au lien que @xavier m'a envoye en MP, j'ai une confirmation d'une possible solution : rediriger le dossier .well-known/acme-validation du serveur ne faisant pas office de serveur de validation vers ce dernier.

J'ai pas beaucoup de temps pour mettre ca en place presentement mais des que j'ai un moment j'essayerais et reviendrais sur ce topic pour dire si c'est une solution fonctionnelle ou pas.

Apres il faut juste trouver un moyen simple de partager le certificat entre les 2 serveurs, sachant que pour l'instant les serveurs n'ont pas d'acces ssh entre eux et que je ne voudrais pas mettre en place des acces ssh juste pour ca... a cogiter donc.
Bonjour,

Je faisais référence à cette phrase "Let’s Encrypt will validate from a number of different IP addresses in the future, and will not announce which ones in advance. You should make sure your validation server is available to all IPs."
Ouais, mais si j'ai bien compris il s'agit des ips de Let's Encrypt.
C'est a dire que l'ideal serait de n'autoriser l'acces au serveur de validation qu'aux ips de Let's Encrypt et interdire tout le reste de l'Internet, mais ce que ce message implique c'est que justement on ne peux pas predire l'ip ou les ips de Let's Encrypt qui realiseront la validation, donc le serveur de validation doit etre accessible a tout l'Internet.
Je ne pense pas que ca ait quelque chose a voir avec le fait qu'un nom de domaine pointe vers plusieurs ips. Donc dans ce cas de figure ca devrais marcher comme si le nom de domaine pointait sur une seule ip (avec les precautions a prendre : redirection au niveau du serveur web vers le serveur d'authentification).
Effectivement je m'étais arrêté à la première partie de la phrase, au temps pour moi.
3 mois plus tard

Salut, as tu essayé de mettre en place un reverse proxy nginx. Qui va forwarder / en https vers ton upstream ou tu pourras faire du failover ou loadbalancing sur tes deux serveurs. Pour let's encrypt utilise le webroot et redirige /.well-known/acme-challenge/ sur le serveur 1.

Salut,

Entre temps j'ai mis ca en place et effectivement j'utilise un reverse proxy sur le second serveur pour rediriger tout ca sur le premier serveur (par contre j'utilise Apache). Et effectivement le mieux est d'utiliser le webroot.
J'ai pas vraiment eu le temps mais j'essayerais de faire un tuto la dessus quand je pourrais.

13 jours plus tard

C'est bon, j'ai cree le tuto qui repond a cette demande ici.

Répondre…