Puncte:0

Este posibil HAProxy în fața Stunnel cu SNI-uri?

drapel cn

Am o terminare SSL funcțională cu STunnel în fața HAproxy.

Recent, problema adăugării suportului pentru HTTP/2 a fost aruncată în calea mea. Acest lucru este ușor cu HAProxy, dar, ca o constrângere, STunnel trebuie să rămână.

Motivul pentru care STunnel trebuie să rămână este aproximativ 17000 de linii de SNI-uri și posibilitatea de a le gestiona printr-un API deja existent.

Aș putea foarte bine să adaug o listă de certificate pentru HAProxy care să conțină SNI-urile, câteva greps și ecouri vor face bine.

Cu toate acestea, în timpul căutărilor mele, nu am găsit încă pe nimeni care să pună HAProxy în fața STunnel în fața lui HAProxy. Este aceasta abordarea greșită?

Iată la ce am început deja să lucrez (încă nu există SNI-uri acolo - 17000 dintre ele ar fi puțin prea mult pentru o postare):

Frontend HAProxy (unde trebuie să adaug suport HTTP/2) cu criptare către STunnel:

asculta frontend
bind 192.168.1.100:443 transparent  
modul http  
server stunnel 127.0.0.100:443 ssl nu verifică niciunul

STunnel

[STunnel]
    cert = /etc/ssl/certs/cert.pem
    cifruri =
ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256
-SHA384:DHE-DSS-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA
256:AES256-GCM-SHA384:AES256-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-
RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:DHE-DSS-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-
RSA-AES128-SHA256:DHE-DSS-AES128-SHA256:AES128-GCM-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA
    accept = 127.0.0.100:443
    conecta = 127.0.0.100:80
    întârziere = da
    opțiuni = NO_SSLv3
    opțiuni = NO_TLSv1
    opțiuni = NO_TLSv1.1
    opțiuni = NO_TLSv1.3
    opțiuni = CIPHER_SERVER_PREFERENCE
    opțiuni = DONT_INSERT_EMPTY_FRAGMENTS
    renegociere = nu
    protocol = proxy
    local = 127.0.0.100
    TIMEOUTclose = 0

„backend” HAProxy

asculta Web
ââââbind 127.0.0.100:80 transparent accept-proxy
ââââmod http
ââââechilibru minimumconn
ââââacl SSL-443 src 127.0.0.100
ââââtcp-request connection expect-proxy layer4 dacă STunnel
ââââopțiune http-keep-alive
ââââtimeout http-request 5s
ââââtunelul timeout 1h
ââââopțiune de reexpediere
ââââopțiuneavortonclose
ââââmaxconn 40000
ââââopțiune httplog
ââââserver server1 192.168.1.98:80 verifica
ââââserver server2 192.168.1.99:80 verifica

Am presupus că este necesară criptarea de la HAProxy la STunnel și ar trebui să țin cont de eventualele nepotriviri de protocol între acestea.

Ce versiune STunnel a lui HAProxy tcp-request connection expect-proxy layer4 dacă STunnel va fi?

Orice ajutor în obținerea suportului HTTP/2 cu STunnel este foarte apreciat, precum și obținerea unui mesaj „Nu face asta, este greșit”.

Mulțumesc,

Marco avatar
drapel in
Presupun că haproxy are nevoie de SNI-uri (certificate) oricum, pentru că trebuie să se ocupe de contactul cu clientul. Cum ar trebui să se facă acest lucru fără certificate?
Marco avatar
drapel in
Dacă haproxy nu are certificatele, nu poate vedea conținutul cererii și nu poate vorbi HTTP/2 cu clientul. Vrei să pui datele neschimbate în stunnel, dar asta înseamnă că stunnel trebuie să facă HTTP/2 și tu ești la început. Rezumat: va funcționa numai dacă hproxy are certificatele pentru a decripta ssl și a-l cripta din nou pentru a-l trimite către stunnel. Ar putea funcționa, dar ar putea duce la o problemă de performanță.
Ai N. avatar
drapel cn
@Marco, acesta a fost și gândul meu. Și nu este ca și cum aș putea folosi un wildcard sau un certificat fals din cauza SNI-urilor care trebuie să fie în "front-end". Speram să pot face o configurație hibridă passthrough-offload. Oricum, acum mut totul în HAProxy și fac lista de certificate și o actualizez dinamic folosind acest [link](https://www.haproxy.com/blog/dynamic-ssl-certificate-storage-in-haproxy/ )
Marco avatar
drapel in
Aș arunca stunnel și aș folosi doar haproxy. Gestionarea certificatelor în haproxy este ușor și liniștit, doar puneți-le pe toate într-un singur director. haproxy îl găsește pe cel de utilizat singur. Dar nu am 17000 în mediul meu. Cred că versiunile mai noi de haproxy detectează modificările și se reîncarcă singur. Cel mai bine, testați-l pe un alt port în paralel cu configurația stunnel.
Ai N. avatar
drapel cn
@Marco Am decis să mut totul la HAProxy, are sens (în plus, știu câteva versiuni în care STunnel a defectat segmentul). Poti te rog sa postezi comentariul tau ca raspuns ca sa il pot accepta? Mulțumesc foarte mult.
Puncte:0
drapel in

haproxy poate vedea datele (protocolul HTTP/2) numai dacă are certificate, decriptează ssl. Mijloace haproxy are nevoie de aceleași certificate disponibile ca și stunnel.

Dacă acest lucru ar funcționa într-un fel, aceasta ar însemna să-l decriptați pentru haproxy și criptați-l din nou pentru stunnel, pentru a-l lăsa să decripteze din nou.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.