HAProxy pour terminer SSL envoie également SSL au serveur principal

14

Je voudrais mettre fin à SSL chez HAProxy, faire quelques manipulations sur l'en-tête, réécrire l'URL et rechiffrer le trafic et l'envoyer aux serveurs backend en SSL?

Je n'arrive pas à trouver un moyen de le faire. Je peux obtenir une terminaison SSL régulière et envoyer des requêtes HTTP simples au backend. Mais je dois envoyer SSL au backend.

J'aimerais avoir les fonctionnalités suivantes:

  • Extrayez les en-têtes x-forwarded-for, pour obtenir la véritable adresse IP du client derrière le proxy.
  • Implémentez l'adhérence de session en utilisant un cookie.
  • Faites une réécriture d'URL.
  • Envoyez du trafic SSL au back-end en utilisant la tenue de session basée sur les cookies.

Sauf si je résilie SSL à la fin du haproxy, je ne peux pas faire de réécriture d'URL.

Toute aide des bonnes personnes ici serait très appréciée.

oazabir
la source
1
Pouvez-vous publier votre configuration actuelle et nous dire ce qui ne fonctionne pas?
GregL

Réponses:

30

Il n'y a rien de spécial à faire dans haproxy.cfg. Vous configurez simplement les réécritures d'URL et les manipulations d'en-tête que vous souhaitez dans votre frontend HAProxy, puis redirigez le trafic vers votre backend SSL. Voici un exemple rapide:

frontend app1_ssl
    bind *:443 ssl crt /etc/haproxy/certs.d/example.com.crt crt /etc/haproxy/certs.d/ no-sslv3

    option http-server-close
    option forwardfor
    reqadd X-Forwarded-Proto:\ https
    reqadd X-Forwarded-Port:\ 443

    # set HTTP Strict Transport Security (HTST) header
    rspadd  Strict-Transport-Security:\ max-age=15768000

    # some ACLs and URL rewrites...

    default_backend             backend_app1_ssl


backend backend_app1_ssl
    server mybackendserver 127.0.0.1:4433 ssl verify none
Sans chambre à air
la source
1
Impressionnant! Laisse moi essayer. Je n'ai pas pu trouver cette chose "serveur .... ssl" n'importe où.
oazabir
Merci beaucoup pour votre aide. J'ai pu le faire fonctionner. Cependant, je ne pouvais pas faire coller SSL au travail. Pourriez-vous m'aider s'il vous plait? La question est ici: serverfault.com/questions/738397/…
oazabir
Super, je suis content d'avoir pu aider. N'oubliez pas d'accepter ma réponse pour que les autres puissent voir tout de suite qu'elle a été utile ;-)
Tubeless
Le cryptage fonctionne-t-il vraiment en donnant à SSL aucune vérification? Dans la documentation haproxy, "S'il est défini sur 'aucun', le certificat du serveur n'est pas vérifié. Dans l'autre cas, le certificat fourni par le serveur est vérifié à l'aide des autorités de certification de 'ca-file'". Quelqu'un peut-il clarifier cela?
mjm
Le ssl verify nonetrafic entre HAProxy et le serveur principal est toujours chiffré, mais la validité du certificat SSL principal n'est pas vérifiée.
Tubeless