J'essaie de configurer un serveur Apache qui utilise ProxyPass pour transmettre des demandes HTTPS à un autre serveur.
Appelons le serveur proxy ALPHA et le serveur cible BETA.
ALPHA n'exécute pas HTTPS, mais BETA le fait.
J'ai d'abord essayé d'utiliser cette spécification d'hôte virtuel sur ALPHA:
<VirtualHost *:443>
ServerName mysite.com
ProxyPass / https://192.168.1.105/ # BETA's IP address
ProxyPassReverse / https://192.168.1.105/ # BETA's IP address
ProxyPreserveHost On
ProxyTimeout 600
SSLProxyEngine On
RequestHeader set Front-End-Https "On"
CacheDisable *
</VirtualHost>
Mais quand j'ai essayé cela, Apache s'est plaint en disant: "[erreur] Le serveur devrait être compatible avec SSL mais n'a pas de certificat configuré [Indice: SSLCertificateFile]".
J'ai dû copier le certificat SSL de BETA vers ALPHA et ajouter ces lignes à la spécification d'hôte virtuel sur ALPHA:
SSLEngine on
SSLCertificateKeyFile /usr/local/ssl/private/BETA_private.key
SSLCertificateFile /usr/local/ssl/crt/BETA_public.crt
SSLCertificateChainFile /usr/local/ssl/crt/BETA_intermediate.crt
Maintenant, le système fonctionne. Mais j'ai le sentiment d'avoir fait quelque chose de mal ou inutile. La clé privée et le certificat du site Web reposent à la fois sur ALPHA et BETA. Est-ce nécessaire? Aurais-je dû le faire différemment?
On dirait que vous chiffrez le trafic deux fois - une fois sur WAN et une autre fois sur un réseau local. Normalement, le proxy inverse est configuré en tant que point de terminaison SSL car il est généralement inutile de chiffrer le trafic sur une connexion LAN sécurisée.
Depuis votre configuration Apache, le proxy inverse (serveur ALPHA) se connecte au serveur Web (serveur BETA) via une adresse IP privée (192.168.1.105). Je suppose que le proxy inverse est accessible par un nom d'hôte trouvé dans le certificat SSL.
Pour que SSL fonctionne correctement pour les utilisateurs se connectant sur le réseau étendu, le cert, la clé et le trousseau doivent être installés sur le proxy inverse (serveur ALPHA). En ce qui concerne le serveur Web (Serveur BETA), si vos utilisateurs ne s'y connectent pas directement, il n'est pas nécessaire d'installer un certificat SSL valide.