Obtendo o HAPROXY para redirecionar http para https na sessão do navegador de usuários

1

No momento, estamos usando um provedor de nuvem na Internet para hospedar nossa plataforma SaaS. A plataforma consiste em um firewall - > SLB do Cloud Provider - > - > Apache Web Server - > HAPROXY SLB - > Plataforma Liferay

Tivemos que usar o HAPROXY devido a um problema com os provedores de nuvem SLB que significava que não poderíamos usá-lo para balanceamento de carga dos aplicativos da plataforma Liferay.

Eu implementei o HAPROXY em nossa camada segura e isso parece fazer o truque de balancear a carga de forma bastante adequada.

No entanto, durante o teste, encontramos um problema funcional pelo qual a seleção de um submenu do portal da Web resultou na suspensão do aplicativo. Por meio de um analisador http, vimos que a solicitação passada para o navegador do usuário estava em http. com o fornecedor do software, verifica-se que o aplicativo Liferay tem alguns links HTTP codificados e que outros clientes trabalharam em torno disso usando NLBs físicos, como o F5, e redirecionando o tráfego http para https.

A entrada nos registros HAPROXY lê:

haproxy[2717]: haproxy[2717]: <Apache Web Agent>:37957 [11/Apr/2013:08:07:00.128] http-uapi uapi/<ServerName> 0/0/0/9/10 200 4912 - - ---- 4/2/1/2/0 0/0 "GET /servicedesk/controller?docommand=renderradform&!key=esd_sfb001_frm_feedback_forms_list&isportalintegratedmode=true&USR=joe.bloggs%40gmail.com&_dc=1365667773097&redirecturl=controller%3Fdocommand%3Drenderbody%26%21key%3DESD_SFB001_FRM_FEEDBACK_FORMS_LIST%26isportalintegratedmode%3Dtrue&sso_token=ALiYv2UqzLsAhSw1ZchRDlCHlq44Bhj9&ONERROR=%2Fweb%2Fjsp%2Fapps%2Fportal-integration-error.jsp&itype=login&slicetoken=NW51O%242aRo%2C_Zz%2476P_9DTtnFmz6%28bhk&AUTOFORWARDURL=controller%3Fdocommand%3Drenderbody%26%21key%3DESD_SFB001_FRM_FEEDBACK_FORMS_LIST%26isportalintegratedmode%3Dtrue&LOGINPAGE=https%3A%2F%2F<FQDN of Web Portal>%2Fweb%2F4732cf01-82c3-4bc5-b6c9-552253e672cf%2Fworkflow-tools&appid=1&!uid=1&!redownloadToken=7.0.3.1.1363611301.0&userlocale=en_US&!datechanged=2012-05-18%2015:05:31.38 HTTP/1.1"
:37957 [11/Apr/2013:08:07:00.128] http-uapi uapi/<ServerName> 0/0/0/9/10 200 4912 - - ---- 4/2/1/2/0 0/0 "GET /servicedesk/controller?docommand=renderradform&!key=esd_sfb001_frm_feedback_forms_list&isportalintegratedmode=true&USR=joe.bloggs%40gmail.com&_dc=1365667773097&redirecturl=controller%3Fdocommand%3Drenderbody%26%21key%3DESD_SFB001_FRM_FEEDBACK_FORMS_LIST%26isportalintegratedmode%3Dtrue&sso_token=ALiYv2UqzLsAhSw1ZchRDlCHlq44Bhj9&ONERROR=%2Fweb%2Fjsp%2Fapps%2Fportal-integration-error.jsp&itype=login&slicetoken=NW51O%242aRo%2C_Zz%2476P_9DTtnFmz6%28bhk&AUTOFORWARDURL=controller%3Fdocommand%3Drenderbody%26%21key%3DESD_SFB001_FRM_FEEDBACK_FORMS_LIST%26isportalintegratedmode%3Dtrue&LOGINPAGE=https%3A%2F%2F<FQDN of Web Portal>%2Fweb%2F4732cf01-82c3-4bc5-b6c9-552253e672cf%2Fworkflow-tools&appid=1&!uid=1&!redownloadToken=7.0.3.1.1363611301.0&userlocale=en_US&!datechanged=2012-05-18%2015:05:31.38 HTTP/1.1"

A entrada do navegador HTTP correspondente mostra:

http://<FQDN of ServiceDesk>/servicedesk/controller?docommand=renderradform&!key=esd_org019_frm_contact_list&isportalintegratedmode=true&USR=joe.bloggs%40gmail.com&_dc=1365665987887&redirecturl=controller%3Fdocommand%3Drenderbody%26%21key%3DESD_ORG019_FRM_CONTACT_LIST%26isportalintegratedmode%3Dtrue&sso_token=3NxsXYORMPp32SwL8ftVUCMH2QdWLH82&ONERROR=%2Fweb%2Fjsp%2Fapps%2Fportal-integration-error.jsp&itype=login&slicetoken=NW51O%242aRo%2C_Zz%2476P_9DTtnFmz6%28bhk&AUTOFORWARDURL=controller%3Fdocommand%3Drenderbody%26%21key%3DESD_ORG019_FRM_CONTACT_LIST%26isportalintegratedmode%3Dtrue&LOGINPAGE=https%3A%2F%2F<FQDN of Web Portal>>%2Fweb%2F4732cf01-82c3-4bc5-b6c9-552253e672cf%2Fapplication-setup&appid=1&!uid=1&!redownloadToken=7.0.3.1.1363611301.0&userlocale=en_US&!datechanged=2012-10-26%2019:00:25.08

Ao ler os fóruns e outros sites, parece que devemos usar o HAPROXY para redirecionar o tráfego para https, mas por mais que eu tente, não consigo trabalhar.

Esta é a nossa configuração HAPROXY:

global

    log         127.0.0.1 local2

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon

    stats socket /var/lib/haproxy/stats

defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

frontend http-openfire
    bind *:7070
    default_backend openfire

backend openfire
    balance     roundrobin
    server  <serverName> <IPv4 Address>:7070 check
    server  <serverName> <IPv4 Address>:7070 check

frontend http-uapi
    bind *:7080
    default_backend uapi

backend uapi
    balance     roundrobin
    server  <serverName> <IPv4 Address>:7080 check
    server  <serverName> <IPv4 Address>:7080 check

frontend http-sec
    bind *:8080
        default_backend sec

backend sec
     balance     roundrobin
     server  <serverName> <IPv4 Address>:8080 check
     server  <serverName> <IPv4 Address>:8080 check

frontend http-wall
    bind *:9080
    default_backend wall

backend wall
    balance     roundrobin
    server  <serverName> <IPv4 Address>:9080 check
    server  <serverName> <IPv4 Address>:9080 check

frontend http-xmpp
    bind *:9090
    default_backend xmpp

backend xmpp
    balance     roundrobin
    server  <serverName> <IPv4 Address>:9090 check
    server  <serverName> <IPv4 Address>:9090 check

frontend http-aim
    bind *:10080
    default_backend aim

backend aim
    balance     roundrobin
    server  <serverName> <IPv4 Address>:10080 check
    server  <serverName> <IPv4 Address>:10080 check

frontend http-servicedesk
    bind *:8081
        default_backend servicedesk

backend servicedesk
     balance     roundrobin
     server  <serverName> <IPv4 Address>:8081 check
     server  <serverName> <IPv4 Address>:8081 check

listen stats :1936
    mode http
    stats enable
    stats hide-version
    stats realm Haproxy\ Statistics
    stats uri /
    stats auth haproxy:<Password>

Eu tentei seguir os artigos listados postados no link e link mas isso não fez nenhuma diferença.

Estou no caminho certo com isso ou estamos tentando alcançar o impossível? Estou esperando ser apenas um idiota e um de vocês, pessoas boas, pode me apontar na direção certa.

    
por Jon 11.04.2013 / 12:23

1 resposta

1

Veja minha resposta neste tópico:

Autenticação reversa do Apache SSL quebra a Autenticação do Liferay

se você quiser "consertar" o http: // hardcoding do Liferay.

    
por 01.06.2013 / 06:34