Bonjour,

Début décembre 2021, mon hébergeur m'annonce qu'il met fin à ses activités.
Mon nom de domaine sogedima.be était hébergé sur un serveur infogéré HostPapa à Toronto, Canada.
J'avais déjà tout l'environnement php, mysql, ftp, la mailbox, etc ...

Comme j'administre déjà ma machine Linux Ubuntu depuis longtemps, je tente l'aventure du VPS.
J'en commande un chez OVH. Pas cher, 175 € Tvac pour deux ans.
Volume disque: 40 Gb
Ubuntu 21.10 pré-installé.

J'y installe un serveur LAMP, ouvre le port 80,
et un autre, secret, pour remplacer le port 22 ssh, trop ciblé par les hackers
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
root@vps-e5a04887:/home/ubuntu# ufw status
Status: active
 
To                         Action      From
--                         ------      ----
80                         ALLOW       Anywhere                  
****                       ALLOW       Anywhere       (port ssh, au lieu du 22)
443                        DENY        Anywhere                  
80 (v6)                    ALLOW       Anywhere (v6)             
**** (v6)                  ALLOW       Anywhere (v6)             
443 (v6)                   DENY        Anywhere (v6)             
 
root@vps-e5a04887:/home/ubuntu#
Je surfe sur http://92.222.217.123
et ça marche, j'ai bien mon site web et mes applications sous les yeux.

Mon hébergeur me donne les codes DNS, que je transfère à OVH, pour qu'ils gèrent mon domaine sogedima.be
Ensuite, je redirige mon nom de domaine sogedima.be sur l'IP du VPS, et je surfe, avec succès sur
http://sogedima.be et sur le sous-domaine http://www.sogedima.be
Parfait

Je propose deux applications en ligne, auxquelles l'utilisateur se connecte avec un login et mot de passe.
Donc, il me faut l'https. L'utilisateur ne voudra jamais donner ses codes d'accès en clair, sans un cadenas dans son navigateur.

OVH propose gratuitement le certificat free. J'en prend un.
Les deux autres offres sont à 20 et 200 € par mois. Plus chers que le VPS lui-même.
Nom : certi01.png
Affichages : 95
Taille : 54,8 Ko


Le helpdesk me dit que je dois re-diriger mon nom de domaine sur l'IP du certificat 91.134.128.89


Nom : certi03.png
Affichages : 93
Taille : 94,1 Ko

Je change l'IP dans les deux lignes, dont j'ai coché les cases, au lieu de l'IP de mon VPS 92.222.217.123
Ca marche.

Je surfe bien sur https://sogedima.be et https://www.sogedima.be
Sans même avoir ouvert le port 443, ce qui m'étonne.
Ni modifié ma config d'Apache2, dans laquelle je n'ai pas mis de Listen 443 dans les ports.conf, ni de <VirtualHost *:443> non plus
qui donnerait le répertoire /var/www/html comme documentRoot du virtualhost *:443

C'est là que les ennuis commencent.
Car l'IP de mon visiteur n'est plus la vraie, mais une adresse 213.232.4.xxx
De surcroît, le dernier octet change à chaque page demandée.

Or, dans mes logiciels, lors du login, je note l'IP de mon utilisateur dans sa session
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
$_SESSION['utilisateurId'] = la clef primaire de mon visiteur, identifié par ses login et mot de passe

Adresse IP que je teste, ensuite régulièrement, pour déceler une usurpation d'IP (homme du milieu)
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
if($_SESSION['ip'] == $_SERVER['REMOTE_ADDR'])
{
 // Traitement normal
}
else
{
 unset($_SESSION['utilisateurId']);
 // Oublie l'utilisateur, et renvoie vers la page de login
}
Et, comme l'IP de l'utilisateur change à toutes les pages, il tourne en rond sur la page de login,
sans pouvoir entrer dans le logiciel, inutilisable.

Dans l'urgence, j'ai programmé une solution sale:
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
if($_SESSION['ip'] == $_SERVER['REMOTE_ADDR'] || strcmp(substr($_SERVER['REMOTE_ADDR'], 0, 9), '213.32.4.') == 0)
{
 // Traitement normal
}
...
La première condition étant toujours fausse, c'est la seconde qui le sauve.
Seconde condition, que je voudrais virer au plus vite.

Pour tenter de résoudre le problème, j'ouvre le port 443
ufw allow 443
et modifie ports.conf, dont voici le contenu
Code apache : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Listen 80
 
<IfModule mod_ssl.c>
    Listen 443
</IfModule>
 
<IfModule ssl_module>
        Listen 443
</IfModule>
 
<IfModule mod_gnutls.c>
        Listen 443
</IfModule>
<

Mais, pour cela, il faut installer des modules.
Sans expérience, je ne suis pas sûr de procéder convenablement.

Voici les modules installés:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
ubuntu@vps-e5a04887:~$ ls -lan /etc/apache2/mods-enabled/
total 8
drwxr-xr-x 2 0 0 4096 Mar 16 15:29 .
drwxr-xr-x 9 0 0 4096 Mar 17 14:15 ..
lrwxrwxrwx 1 0 0   36 Jan 18 19:52 access_compat.load -> ../mods-available/access_compat.load
lrwxrwxrwx 1 0 0   28 Jan 18 19:52 alias.conf -> ../mods-available/alias.conf
lrwxrwxrwx 1 0 0   28 Jan 18 19:52 alias.load -> ../mods-available/alias.load
lrwxrwxrwx 1 0 0   33 Jan 18 19:52 auth_basic.load -> ../mods-available/auth_basic.load
lrwxrwxrwx 1 0 0   33 Jan 18 19:52 authn_core.load -> ../mods-available/authn_core.load
lrwxrwxrwx 1 0 0   33 Jan 18 19:52 authn_file.load -> ../mods-available/authn_file.load
lrwxrwxrwx 1 0 0   33 Jan 18 19:52 authz_core.load -> ../mods-available/authz_core.load
lrwxrwxrwx 1 0 0   33 Jan 18 19:52 authz_host.load -> ../mods-available/authz_host.load
lrwxrwxrwx 1 0 0   33 Jan 18 19:52 authz_user.load -> ../mods-available/authz_user.load
lrwxrwxrwx 1 0 0   32 Jan 18 19:52 autoindex.conf -> ../mods-available/autoindex.conf
lrwxrwxrwx 1 0 0   32 Jan 18 19:52 autoindex.load -> ../mods-available/autoindex.load
lrwxrwxrwx 1 0 0   30 Jan 18 19:52 deflate.conf -> ../mods-available/deflate.conf
lrwxrwxrwx 1 0 0   30 Jan 18 19:52 deflate.load -> ../mods-available/deflate.load
lrwxrwxrwx 1 0 0   26 Jan 18 19:52 dir.conf -> ../mods-available/dir.conf
lrwxrwxrwx 1 0 0   26 Jan 18 19:52 dir.load -> ../mods-available/dir.load
lrwxrwxrwx 1 0 0   26 Jan 18 19:52 env.load -> ../mods-available/env.load
lrwxrwxrwx 1 0 0   29 Jan 18 19:52 filter.load -> ../mods-available/filter.load
lrwxrwxrwx 1 0 0   27 Jan 18 19:52 mime.conf -> ../mods-available/mime.conf
lrwxrwxrwx 1 0 0   27 Jan 18 19:52 mime.load -> ../mods-available/mime.load
lrwxrwxrwx 1 0 0   34 Jan 18 19:52 mpm_prefork.conf -> ../mods-available/mpm_prefork.conf
lrwxrwxrwx 1 0 0   34 Jan 18 19:52 mpm_prefork.load -> ../mods-available/mpm_prefork.load
lrwxrwxrwx 1 0 0   34 Jan 18 19:52 negotiation.conf -> ../mods-available/negotiation.conf
lrwxrwxrwx 1 0 0   34 Jan 18 19:52 negotiation.load -> ../mods-available/negotiation.load
lrwxrwxrwx 1 0 0   29 Jan 18 19:52 php8.0.conf -> ../mods-available/php8.0.conf
lrwxrwxrwx 1 0 0   29 Jan 18 19:52 php8.0.load -> ../mods-available/php8.0.load
lrwxrwxrwx 1 0 0   33 Jan 18 19:52 reqtimeout.conf -> ../mods-available/reqtimeout.conf
lrwxrwxrwx 1 0 0   33 Jan 18 19:52 reqtimeout.load -> ../mods-available/reqtimeout.load
lrwxrwxrwx 1 0 0   31 Jan 18 19:52 setenvif.conf -> ../mods-available/setenvif.conf
lrwxrwxrwx 1 0 0   31 Jan 18 19:52 setenvif.load -> ../mods-available/setenvif.load
lrwxrwxrwx 1 0 0   36 Mar 16 14:11 socache_shmcb.load -> ../mods-available/socache_shmcb.load
lrwxrwxrwx 1 0 0   29 Jan 18 19:52 status.conf -> ../mods-available/status.conf
lrwxrwxrwx 1 0 0   29 Jan 18 19:52 status.load -> ../mods-available/status.load
ubuntu@vps-e5a04887:~$
Je relance apache, en sudo: service apache2 restart

Rien ne change, ne ne vois toujours pas la véritable IP de mon utilisateur, mais cette IP fantaisiste 213.32.4.xxx
qui change tout le temps.

Je suis développeur d'applications, mais pas expert en sécurité.
Toutes ces questions de certificats et de clefs me sont un peu nébuleuses.

J'ai déjà suivi un tuto, qui explique comment générer son propre certificat ssl apache.pem, et l'installer sous Apache
https://technique.arscenic.org/lamp-...l-pour-apache2

Que j'ai testé sur mon ordi, mais pas sur mon VPS
Car les navigateurs ne reconnaissent pas la fiabilité de ce genre de certificat auto-généré par le titulaire du site lui-même.
Un peu comme un étudiant qui signerait son propre diplôme, sans aller à l'unif, ni passer d'examen.

Pour ne pas bouziller mon VPS, je n'en ai pas fait plus, ni ne suis allé plus loin.
Quelqu'un saurait-il m'expliquer comment installer proprement un certificat OVH free sur un serveur Apache2 ?
De sorte que je voie bien l'IP de mon visiteur, comme avant, sur mon hébergement infogéré HostPapa ?

Merci,
Christian.