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 🙂