J'utilise un serveur apache (2.4) configuré comme équilibreur de charge devant 2 serveurs apache. Cela fonctionne très bien lorsque j'utilise des connexions http entre loadbalancer et backends, mais l'utilisation de https ne fonctionne pas. La configuration de l'équilibreur de charge:
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
<Proxy balancer://testcluster>
BalancerMember https://[Backend1]:443/test
BalancerMember https://[Backend2]:443/test
</Proxy>
ProxyPass /test balancer://testcluster
Les backends n'ont pour l'instant que des certificats auto-signés, c'est pourquoi la vérification des certificats est désactivée.
Le journal des erreurs sur l'équilibreur de charge contient les éléments suivants:
[proxy:error] [pid 31202:tid 140325875570432] (502)Unknown error 502: [client ...] AH01084: pass request body failed to [Backend1]:443 ([Backend1])
[proxy:error] [pid 31202:tid 140325875570432] [client ...] AH00898: Error during SSL Handshake with remote server returned by /test/test.jsp
[proxy_http:error] [pid 31202:tid 140325875570432] [client ...] AH01097: pass request body failed to [Backend1]:443 ([Backend1]) from [...] ()
La page d'erreur du navigateur contient:
Proxy Error
The proxy server could not handle the request GET /test/test.jsp.
Reason: Error during SSL Handshake with remote server
Comme je l'ai déjà indiqué ci-dessus, la modification de la configuration vers le protocole http et le port 80 fonctionne. Les connexions https entre le client et l'équilibreur de charge fonctionnent également, de sorte que le module SSL de l'équilibreur de charge semble être correctement configuré. La connexion directe au backend via https ne génère également aucune erreur.
Merci d'avance pour votre temps
Edit: je l'ai compris, le problème est que le nom commun de mes certificats ne correspond pas au nom du serveur. Je pensais que SSLProxyVerify aucun ne ferait ignorer ce décalage, mais ce n'est pas le cas. Avant apache 2.4.5, cette vérification peut être désactivée en utilisant SSLProxyCheckPeerCN off mais sur les versions supérieures (j'utilise 2.4.7) SSLProxyCheckPeerName off doit également être spécifié.
Documentation Apache pour sslproxycheckpeername
La configuration de travail ressemble à ceci:
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
<Proxy balancer://testcluster>
BalancerMember https://[backend1]:443/test
BalancerMember https://[backend1]:443/test
</Proxy>
ProxyPass /test balancer://testcluster
Malheureusement, je ne peux pas répondre à ma propre question par manque de réputation, j'ai donc édité ma question, j'espère que cela aidera toute personne qui rencontre un problème similaire