Bonjour,
on va commencer à remettre à plat les terminologie
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.