HAProxy per terminare SSL invia anche SSL al server back-end


14

Vorrei terminare SSL su HAProxy, fare un po 'di manipolazione sull'intestazione, riscrivere l'URL e ri-crittografare il traffico e inviarlo ai server back-end come SSL?

Non riesco a trovare un modo per farlo. Posso eseguire regolarmente la terminazione SSL e inviare semplici richieste HTTP al back-end. Ma devo inviare SSL per il backend.

Vorrei avere le seguenti caratteristiche:

  • Estrai le intestazioni x-forwarded-for, per ottenere il vero IP client dietro il proxy.
  • Implementare l'appiccicosità della sessione usando i cookie
  • Esegui una riscrittura dell'URL.
  • Invia traffico SSL al back-end utilizzando la viscosità della sessione basata su cookie.

A meno che non concluda SSL al termine haproxy, non riesco a riscrivere l'URL.

Qualsiasi aiuto da parte delle brave persone qui sarebbe molto apprezzato.


1
Puoi pubblicare la tua configurazione attuale e dirci cosa non funziona?
GregL

Risposte:


30

Non c'è niente di speciale da fare in haproxy.cfg. Devi semplicemente configurare qualsiasi riscrittura degli URL e manipolazioni delle intestazioni desiderate all'interno del tuo frontend HAProxy e quindi reindirizzare il traffico al tuo backend SSL. Ecco un breve esempio:

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

1
Eccezionale! Lasciami provare. Non sono riuscito a trovare quella cosa "server .... ssl" da nessuna parte.
Oazabir,

Molte grazie per il vostro aiuto. Sono stato in grado di farlo funzionare. Tuttavia, non sono riuscito a far funzionare SSL. Potresti aiutare per favore? La domanda è qui: serverfault.com/questions/738397/…
oazabir,

Fantastico, sono contento di essere stato in grado di aiutare. Non dimenticare di accettare la mia risposta in modo che gli altri possano capire subito che è stato utile ;-)
Tubeless,

La crittografia funziona davvero dando a ssl nessuna verifica? Dalla documentazione haproxy, "Se impostato su 'none', il certificato del server non viene verificato. Nell'altro caso, il certificato fornito dal server viene verificato usando le CA da 'ca-file'". Qualcuno può chiarire questo?
mjm

Con il ssl verify nonetraffico tra HAProxy e il server back-end è ancora crittografato, ma la validità del certificato SSL back-end non viene verificata.
Tubeless,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.