38 votes

Utilisation de Https entre Apache Loadbalancer et les backends

J'utilise un serveur apache (2.4) configuré comme loadbalancer devant 2 serveurs apache. Cela fonctionne bien lorsque j'utilise des connexions http entre le loadbalancer et les backends, mais l'utilisation de https ne fonctionne pas. La configuration du loadbalancer :

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 de l'équilibreur de charge contient ce qui suit :

[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 dans le 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, le fait de changer la configuration pour le protocole http et le port 80 fonctionne. Les connexions https entre le client et l'équilibreur de charge fonctionnent également, le module ssl de l'équilibreur de charge semble donc être correctement configuré. La connexion directe au backend via https ne produit pas non plus d'erreurs.

Merci d'avance pour votre temps


Modifier : J'ai compris, le problème est que le nom commun de mon certificat ne correspond pas au nom du serveur. J'ai pensé que SSLProxyVerify aucun devrait permettre d'ignorer cette incohérence, mais ce n'est pas le cas. Avant la version 2.4.5 d'Apache, cette vérification peut être désactivée en utilisant la commande SSLProxyCheckPeerCN désactivé mais sur les versions supérieures (j'utilise 2.4.7) SSLProxyCheckPeerName désactivé doit également être spécifié.

Documentation Apache pour sslproxycheckpeername

La configuration de travail est la suivante :

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, faute de réputation, et j'ai donc modifié ma question, J'espère que cela aidera ceux qui rencontrent un problème similaire.

27voto

ETL Points 6403

Le problème s'est avéré être que le nom commun des certificats ne correspondait pas au nom du serveur.

Avant la version 2.4.5 d'Apache, cette vérification peut être désactivée à l'aide de la commande SSLProxyCheckPeerCN off mais sur les versions supérieures (telles que 2.4.7) SSLProxyCheckPeerName off doit également être spécifié.

Documentation Apache pour SSLProxyCheckPeerName

La configuration de travail est la suivante :

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

Vous pouvez vérifier la version d'Apache que vous avez avec :

apachectrl -V

0voto

Murryy Points 29

L'ajout du texte ci-dessous a résolu le problème

SSLProxyProtocol +TLSv1

-4voto

nutria Points 7

J'utilise Apache 2.4.9 et j'ajoute au httpd-ssl.conf le code suivant

SSLProxyProtocol +SSLv3 +TLSv1 +TLSv1.1

j'ai résolu les problèmes

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X