Bon, des fois on a besoin de sécuriser ses serveurs Web mais tous n’ont pas la simplicité nécessaire à l’ajout d’un certificat https. Voici un exemple de reverse proxy basé sur Apache HTTPD.

Voici le principe : 

Mon serveur Web est en listen uniquement sur 127.0.0.1 et écoute sur le port 8080. Le serveur Apache est en frontal, il est en listen sur 0.0.0.0 (toutes les interfaces, ou uniquement celle que l’on souhaite, comme 192.168.1.55 sur le dessin) et écoute sur les ports 80 (HTTP) et 443 (HTTPS). 

Nous allons mettre en place une redirection du 80 vers le 443 pour forcer le passage en HTTPS.

D’abord, créons un certificat. Dans cet exemple, il s’agit d’un certificat auto-signé. Dans la vraie vie, prenez un certificat signé par une autorité de confiance (genre LetsEncrypt ou votre DSI)

openssl req -new -x509 -days 365 -sha1 -nodes -out server.pem -keyout server.key

Installons HTTPD sur un Ubuntu :

sudo apt update
sudo apt install apache2
sudo a2enmod headers proxy proxy_http ssl proxy_wstunnel rewrite_module rewrite
sudo a2dissite 000-default.conf

Créons /etc/apache2/sites-available/001-seeq.conf en tant que root. On redirige le trafique HTTP sur HTTPS.

<VirtualHost *:80>
    ServerName 192.168.1.55
    Redirect / https://192.168.1.55/
</VirtualHost>

Créons /etc/apache2/sites-available/001-seeq-ssl.conf en tant que root pour gérer le trafique en HTTPS.

<IfModule mod_ssl.c>
<VirtualHost *:443>
 
  ProxyRequests Off
  ProxyPreserveHost On
  
  SSLEngine on
  
  # Proxy Websocket requests
  RewriteEngine On
  RewriteCond %{HTTP:Connection} Upgrade [NC]
  RewriteCond %{HTTP:Upgrade} websocket [NC]
  RewriteRule /(.*) ws://localhost:8080/$1  [P,L]
 
  # Proxy HTTP requests
  ProxyPass / http://localhost:8080/
  ProxyPassReverse / http://localhost:8080/
 
  SSLCertificateFile /path/to/cert/server.pem
  SSLCertificateKeyFile /path/to/cert/server.key
 
</VirtualHost>
</IfModule>

Activons ces configurations :

sudo a2ensite 001-seeq.conf
sudo a2ensite 001-seeq-ssl.conf
sudo service apache2 restart

Normalement, c’est bon 🙂

Partager c'est la vie

Leave a Comment