Redirection DNS et certificat SSL

Bonjour,

Je suis un novice sur le domain, j’ai récemment acquis un serveur dédiée pour me faire la main.

Je bloque maintenant depuis un bon moment, je n’arrive pas faire mes redirection dns et avoir un certificat ssl.

Je vous explique sur mon serveur racine, j’ai plusieur vm qui tourne sous debian. xx1.nomdomaine .fr, xx2.nomdomaine .fr, xx3.nomdomaine. fr, ect…

après plusieurs galère, j’ai réussie a faire fonctionner le sous domaine numéro 1 correctement en https, le port 440 et 80 est donc monopoliser par la vm.

Je bloque totalement sur comment faire un certificat ssl pour avoir mes autre sous domaine en https. (l’et encrypte obligeant d’avoir le port 80 et 440)

(pour info, je procède par NAT pour rediriger les ports de mon serveur racine vers le VM et ensuite via nginx pour le reverse proxy)

Bonjour,

on va commencer à remettre à plat les terminologie :slight_smile:

tu as un serveur dédié: un VPS (Virtual Private Server).
Sur ce serveur tu as plusieurs sites web:
xx1.nomdomaine.de
xx2.nomdomaine.de
xx3.nomdomaine.de
etc…

1ère Question: Ces serveurs tournent sur Apache?

si on considère que tu utlises Apache, pour cchacun des sites tu dois avoir (ex: xx1):

  • Un fichier /etc/apache2/sites-available/sitexx1.conf
    Qui contient une déclaration Virtualhost:

<VirtualHost *:80> # Virtualhost écoutant sur le port 80
ServerName xx1.nomdomaine.fr# Nom du serveur auquel le vhost doit répondre
ServerAdmin webmaster@nomdomaine.fr # Mail du webmaster

    ErrorLog /var/log/apache2/xx1-error.log 
    CustomLog /var/log/apache2/xx1-access.log 
    ServerSignature Off
    DocumentRoot "/var/www/xx1" # Racine des fichiers du site
    <Directory "/var/www/xx1/"> #Définition des droits d'un répertoire
            Options Indexes FollowSymLinks # Options choisies
            AllowOverride All # Permet d'utiliser le htaccess dans un site
            Require all granted # On autorise tout le monde
    </Directory> # Fin de la définition des droits

# Fin de la définition du vhost

pour activer cette configuration:
a2ensite xx1.conf
systemctl reload apache2

Dans le DNS de la zone nomdomaine.fr tu declares un enregistrement :

  • Type A:
    xx1 IN A ipVPS
  • Type CNAME
    xx1 IN CNAME vps.nomdomaine.fr.

La différence des deux enregistrements:
A tu pointes sur une IP
CNAME: tu pointe sur un enregistrement de type A existant; Celui-ci est intéressant dans le sens où tu as déjà l’IP présente dans un type A. Si ton serveur change d’IP, tu ne modifie que le type A, les CNAME n’ont rien à modifier. Tu utilises en fait une notion de service.

Pour faire la partie SSL,

Il te faut modifier ton virtualhost pour prendre en charge le protocole HTTPS, et donc 443; il faut aussi ajouter les entrées vers ton certificat:

<VirtualHost *:443> # Virtualhost écoutant sur le port 80
ServerName xx1.nomdomaine.fr# Nom du serveur auquel le vhost doit répondre
ServerAdmin webmaster@nomdomaine.fr # Mail du webmaster
ErrorLog /var/log/apache2/xx1-error.log
CustomLog /var/log/apache2/xx1-access.log
ServerSignature Off
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/xx1.nomdomaine.fr/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/xx1.nomdomaine.fr/privkey.pem
DocumentRoot « /var/www/xx1 » # Racine des fichiers du site
<Directory « /var/www/xx1/ »> #Définition des droits d’un répertoire
Options Indexes FollowSymLinks # Options choisies
AllowOverride All # Permet d’utiliser le htaccess dans un site
Require all granted # On autorise tout le monde
# Fin de la définition des droits
# Fin de la définition du vhost

Tu recharges ton apache:
systemctl reload apache2

Il n’y a aucun NAT necessaire ici, il te suffit de faire ecouter ton apache sur ton interface Publique.
Listen <ip pub>:443

n’oublie pas bien sur de mettre en place un parefeu avec comme règles:
Accepter net IP_PUB_VPS SSH
Accepter net IP_PUB_VPS HTTPS
A adapter en fonction de l’outil de parefeu que tu utilises.

Si tu utilises un reverse proxy, c’est lui qui porte les certificats et c’est lui qui reçoit les requêtes.
Il va donc servir de frontal (tu devras faire une decllaration de frontal pour chaque xx1,x2, etc… incluant la declaration du certificat correspondant.
Il te faudra déclarer un backend pour chaque site aussi. personnellement je modifierais pour faire écouter apache en local (127.0.0.1) pour éviter de ne pouvoir attaquer ton apache directement.
Ton apache en local ecoute sur le port 80 en 127.0.0.1, le reverse proxy écoute sur le port 443 en IP publique.

1 J'aime

Bonjour Zargos,

Tout d’abord merci pour cette explication avant d’entrée plus dans les détails pour revenir sur ma configuration.

Mon serveur tourne avec Windows Serveur qui sert uniquement de base pour vmware. c’est sur se dernier que je possède des VM sous Debian avec apache effectivement.

Il y a donc sur ses vm des sites web ( xx1.nomdedomine.de, xx2.nomdomaine.de, ect…)

J’utilise le nat pour la redirection entre les port du serveur racine « windows » et les différentes VM sous vmware.

En fait tu n’aurais pas besoin du NAT, un reverse proxy pourrait tout autant rediriger les URL bvers les serveurs.
Ceci dit, tu pourrais tout faire avec un seul serveur. Car utiliser un hyperviseur sous windows c’est une grosse perte de ressources machines

Mais sinon tu met ton reverse proxy sur le windows, c’est lui qui recoit les requetes et qui ensuite les renvoies vers les VMs

Bonjour et bienvenue sur le forum,

Je ne sais pas si ça peut t’aider, mais pour ce genre de fonctionnement, j’ai fait une machine qui gère tout ce qui est le HTTPS et qui fait proxy avec tous mes services web qui sont en HTTP.
Si tu as du NAT, ça risque d’être assez compliqué de faire autrement.

Bonjour Almtesh et merci,

c’est vrais que cela peut être une solution, avec le message plus haut de zargos, je commence à avoir une bonne idée de quoi essayer.

Je me pose aussi la question de la viabilité de mon système en terme de consommation de ressource avec plusieurs Vms car j’héberge seulement un gestionnaire de livre, un cloud, un médiacentre, et diverse app peut gourmande qui sorte en interfaces web.

comme le mentionne Zargos, c’est peut être plus intéressent en terme de ressource d’avoir tout sur un seul serveur ou bien sur un hyperviseur de type 1 comme esxi ?

Aucune idée, moi, j’utilise des conteneurs Linux, ça évite de devoir virtualiser complètement la machine.

2 J'aime