MaDoVi - Le wiki

Machines - Données - Virtualisation

Outils pour utilisateurs

Outils du site


archives:reseau:acces_vhs_https_nomdedomaine

Accéder à l'interface Web du VHS en HTTPS sur son propre nom de domaine

FIXME Ce tuto est probablement obsolète avec la possibilité de définir son propre nom de domaine dans la configuration

Problématique de départ :

- Par défaut, le VHS (os:v3 et supérieurs) est configuré pour qu'on accède à l'interface Web seulement via une URL monid.ve-hotech.me en HTTP ou HTTPS (il est possible de n'activer que l'un des deux, ou les deux à la fois)

Edit : Je viens de découvrir qu'il est possible dans la config avancée du VHS de définir un nom de domaine pour l'accès au portail. En faisant cela, le portail sera alors accessible uniquement via le nom de domaine donné et plus via le nom de domaine monid.ve-hotech.me.

- Si on active uniquement l'accès HTTPS au portail VHS4, on obtient une erreur si on tente l’accès en HTTP. Il serait plus pratique d'être redirigé vers le HTTPS.

- Si on veut héberger des sites web sur des VM (par exemple pour ne pas être limité par les contraintes d'hébergement du VHS), le serveur ne propose pas de solution pour accéder de l’extérieur à ces sites.

Buts :

Le but de ce tuto est de pouvoir aussi accéder au VHS en utilisant son propre nom de domaine (mondomain.com) tout en forçant l'utilisation du protocol HTTPS. Les accès en HTTP seront automatiquement redirigé vers du HTTPS pour simplifier l’accès.

Il sera toujours possible d'accéder au VHS avec le nom de domaine monid.ve-hotech.me Et il sera maintenant possible aussi d'y accéder avec mondomain.com

De plus on aura mis en place un reverse-proxy qui nous permettra entre autre de donner accès à des sites hébergés sur des VM (ou toute autre machine sur le réseau).

Attention !! :

On met en place ici un certificat SSL auto-signé. Ce type de certificat fait qu'on aura un message d'avertissement du navigateur. Pour ne pas avoir cet avertissement, il faudra un certificat plus complet.

Attention 2 !! :

J'ai découvert que le VHS utilise un nom de domaine différent du domaine du portail pour le partage de liens. Il faudrait donc quelques configurations supplémentaires sur le reverse-proxy pour prendre en compte cet autre domaine. Je corrigerai le tuto sur ce point dés que possible.

Grandes lignes :

Nous allons configurer une machine virtuelle sur le VHS4 Cette VM fera une redirection permanente du HTTP vers HTTPS pour les noms de domaines mondomain.com et monid.ve-hotech.me Elle jouera également le rôle de reverse-proxy HTTPS→HTTP vers le VHS4

On veut une communication sécurisée (HTTPS) entre le navigateur et le proxy. Par contre les communications entre le proxy et le VHS peuvent être en HTTP, on est en local, on fait confiance et c'est plus simple. Donc c'est le proxy qui se chargera du HTTPS et tous les accès du proxy sur le VHS4 seront en HTTP.

Donc : Les requêtes http://mondomain.com… seront redirigées (redirection permanente 301) vers https://mondomain.com… Lorsqu'une requête https://mondomain.com arrivera sur le proxy, celui-ci fera la requête correspondantes sur http://192.168.0.1 avec le nom de domaine “monid.ve-hotech.me”

Je pars du principe que :

La VM aura un OS Ubuntu Server L'IP locale du VHS4 est : 192.168.0.1 L'IP locale de la VM reverse-proxy sera : 192.168.0.11 Mon nom de domaine ve-hotech.me est : monid.ve-hotech.me Mon nom de domaine perso est : mondomain.com Le réseau local dispose d'un routeur et d'un serveur DHCP Le VHS4 est dans la DMZ du réseau local

Cela correspond à la plupart des particuliers disposant d'une box ADSL chez eux, cette box faisant les deux rôles de routeur et DHCP. Je ne détaillerai pas la configuration de ces éléments, car cela dépend du matériel de chacun. Je me contenterai de décrire ce qu'il faut mettre en place.

Préparation de la VM

On aura besoin d'une machine virtuelle.

Je propose d'installer dessus Ubuntu Server, mais tout autre OS fera l'affaire On va sur l'interface web du VHS4 et l'on crée une nouvelle machine virtuelle sur laquelle on installe Ubuntu Server Je ne détaille pas cette étape, d'autres l'ont déjà fait mieux que je ne saurais le faire. (FIXME serveur_linux_acces_ssh)

Je ne détaille pas l'installation de la VM. Je pense que vous trouverez facilement des tutos décrivant comment bien installer Ubuntu Server. Je conseille d'installer un accès SSH sur cette VM pour pouvoir plus facilement la configurer.

Installation de Nginx

Nous allons utiliser le serveur Nginx pour faire les redirections HTTP et le proxy HTTPS. Il faut donc installer Nginx (commande à taper dans une console sur la VM):

apt-get install nginx

Création d'un certificat ssl auto-signé

Nous aurons besoin de ce certificat pour faire du HTTPS (je me suis inspiré de cet article : http://dracoblue.net/dev/https-nginx-with-self-signed-ssl-certificate/188/) On va ranger les fichiers du certificat dans un répertoire “ssl” dans /etc/nginx

sudo mkdir /etc/nginx/ssl
cd /etc/nginx/ssl
sudo openssl req -new -x509 -nodes -out server.crt -keyout server.key
sudo chmod 600 server.key

Configuration de Nginx

Rappel :

On veut rediriger les accès HTTP vers HTTPS sur les deux domaines monid.ve-hotech.me et mondomain.com On veut faire un proxy de ces deux domaines en HTTPS vers le VHS4 en HTTP

Je pars du principe que :

Dans le répertoire /etc/nginx (configuration du serveur nginx) on trouve : - Un fichier proxy.conf : configuration à charger pour activer un serveur proxy - Un répertoire sites-available : contient les différents fichiers de config des vhosts activables sur le serveur nginx - Un répertoire sites-enabled : contient des liens symboliques vers les fichiers de config de sites-available à activer

Je ne me souviens pas exactement de la configuration de base de nginx. On trouve facilement sur le web des tutos pour bien configurer nginx (FIXME Des références seraient nécessaires ici)

On a donc besoin de :

1 vhost HTTP (port 80) pour monid.ve-hotech.me - redirection vers HTTPS 1 vhost HTTP (port 80) pour mondomain.com - redirection vers HTTPS 1 vhost HTTPS (port 443) pour monid.ve-hotech.me - proxy vers 192.168.0.1 en HTTP 1 vhost HTTPS (port 443) pour mondomain.com - proxy vers 192.168.0.1 en HTTP avec l'entête “Host: monid.ve-hotech.me”

On va pouvoir gérer toutes ces contraintes avec deux vhosts, gérant chacun les deux domaines.

Au boulot :

On va commencer par créer le vhost de redirection HTTP→HTTPS :

sudo nano /etc/nginx/sites-available/VHS.redirect.HTTP-HTTPS

Dans ce fichier on va écrire cette configuration :

server {
        # port 80 - HTTP
        listen   80;

        # Prise en charge des deux domaines
        server_name monid.ve-hotech.me mondomain.com;

        # Redirection permanente en conservant l'host et la requête
        rewrite ^ https://$http_host$request_uri? permanent;
}

Maintenant on crée le vhost de proxy HTTPS vers 192.168.0.1 en HTTP avec l'entête “Host: monid.ve-hotech.me”

sudo nano /etc/nginx/sites-available/VHS.proxy.HTTPS-HTTP_monid.ve-hotech.me

Dans ce fichier on écrit la config suivante :

server {
        # port 443 - HTTPS
        listen 443;

        # Prise en charge des deux domaines
        server_name monid.ve-hotech.me mondomain.com;

        # Activation du SSL
        ssl                  on;

        # Définitions des fichiers du certificat
        ssl_certificate      /etc/nginx/ssl/server.crt;
        ssl_certificate_key  /etc/nginx/ssl/server.key;

        location / {
            # On charge la config de proxy
            include /etc/nginx/proxy.conf;

            # On force l'entête HTTP "Host: monid.ve-hotech.me"
            proxy_set_header    Host   monid.ve-hotech.me;

            # On transmet la requête en HTTP a 192.168.0.1 (le VHS)
            # Attention : On ne met pas de / final a l'URL !
            # Ainsi aucun Path n'est spécifié, et donc il est transmis au complet
            proxy_pass http://192.168.0.1;
        }
}

Les deux vhosts sont prêts, il faut maintenant les activer. On crée un lien symbolique dans le répertoire sites-enabled (sites actifs) pour les 2

ln -s /etc/nginx/sites-available/VHS.redirect.HTTP-HTTPS /etc/nginx/sites-enable/VHS.redirect.HTTP-HTTPS
ln -s /etc/nginx/sites-available/VHS.proxy.HTTPS-HTTP_monid.ve-hotech.me /etc/nginx/sites-enable/VHS.proxy.HTTPS-HTTP_monid.ve-hotech.me

Et on peut maintenant relancer le serveur nginx pour qu'il prenne en compte ces nouvelles configs

sudo service nginx restart

Le serveur est prêt, on peut maintenant configurer le VHS et le réseau local.

Configuration du VHS

En fait, il suffit de vérifier que l'interface web du VHS est bien disponible en HTTP. Pour cela, il faut aller dans “Configuration avancée” (Système>Général, la vue par défaut) et vérifier que la case “Accès à l'interface Web > Activer HTTP” est bien cochée.

Configuration du réseau local

On dispose maintenant d'un serveur prêt à prendre en charge les connexions HTTP(port 80) et HTTPS(port 443). On va donc maintenant configurer le routeur pour qu'il lui transmette ces connexions. Et pour pouvoir transmettre les connexions au proxy, il faut que celui-ci aie une adresse IP fixe. On va s'assurer de ça avec le serveur DHCP.

Configuration du DHCP

Le serveur DHCP se charge d'attribuer les adresses IP aux machines qui se connectent sur le réseau. On va donc lui dire de toujours donner la même adresse à la VM qu'on vient de configurer. Pour cela il nous faut l'adresse MAC de la VM. On peut l'obtenir facilement avec la commande (sur la VM) :

ifconfig

ce qui donne par exemple :

eth0      Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX  
          inet adr:192.168.0.11  Bcast:192.168.0.255  Masque:255.255.255.0
          adr inet6: ff84::2462:aa:c43a:dc06/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Packets reçus:5369044 erreurs:0 :94 overruns:0 frame:0
          TX packets:389411 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000 
          Octets reçus:310188292 (310.1 MB) Octets transmis:76888988 (76.8 MB)
          Interruption:10 Adresse de base:0xa000 

lo        Link encap:Boucle locale  
          inet adr:127.0.0.1  Masque:255.0.0.0
          adr inet6: ::1/128 Scope:Hôte
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          Packets reçus:0 erreurs:0 :0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0 
          Octets reçus:0 (0.0 B) Octets transmis:0 (0.0 B)

On relève la valeur de HWaddr (XX:XX:XX:XX:XX:XX)

Et maintenant il faut configurer le serveur DHCP pour attribuer l'IP 192.168.0.11 pour l'adresse MAC de la VM (XX:XX:XX:XX:XX:XX)

:!: Attention à verifier que 192.168.0.11 n'est pas dans la plage d'adresses dynamiques du serveur DHCP

On renouvèle l'adresse IP de la VM avec la commande :

sudo dhclient -r eth0 ; sudo dhclient eth0

:!: Attention à bien faire les deux commandes d'un coup (séparées par ; ) sinon vous perdez la connexion réseau de la VM et vous n'avez plus qu'à la redémarer.

Configuration du routeur

Il ne reste plus qu'à configurer le routeur pour faire les redirections NAT suivantes : redirection du port TCP 80 vers le port 80 de 192.168.0.11 redirection du port TCP 443 vers le port 443 de 192.168.0.11

Attention !!:

A partir de maintenant, toutes les connexions HTTP et HTTPS venant de l'extérieur arriveront sur la VM et plus sur votre VHS. Cela peut perturber les accès au VHS4 depuis l'extérieur, notamment si vous voulez utiliser d'autres sites hébergés sur le VHS. Il faudra alors mettre en place un vhost proxy pour chaque site sur le serveur nginx de la VM.

Cela peut se faire facilement avec une config comme ceci :

server {
        listen   80;
        server_name un.autre.domain.com;

        include /etc/nginx/proxy.conf;

        location / {
                proxy_pass http://192.168.0.1;
        }
}
archives/reseau/acces_vhs_https_nomdedomaine.txt · Dernière modification: 04/10/2019 20:56 de Cram28