@TheJacob wrote:
Hi all,
I have a problem with HAProxy configuration. Because my HAProxy isn’t in the same data center as my web server, I have working configuration to connect www-backend to my webserver’s HTTPS port. It all works just fine.Well… Almost.
Today I tried to upload a file (250 kB) using a
<form>and I gotHTTP 413 Request entity too large. Checking the Apache server log, I’ve found two messages:AH02018: request body exceeds maximum size (131072) for SSL buffer, referer: https://my.website.com/pageand
AH02257: could not buffer message body to allow SSL renegotiation to proceed, referer: https://my.website.com/pageI’ve done some investigation, found couple of old articles at stackoverflow, all recommending setting Apache’s
SSLRenegBufferSizeto something bigger. I don’t want to go that way.I’ve tried to upload the file directly to webserver (bypassing HAProxy) and it works just fine.
Changing my server definition in
www-backendfrom:server server1 1.2.3.4:443 check ssl verify noneto
server server1 1.2.3.4:80 checkresolved the issue and I was able to upload the file while being connected through HAProxy.
However, I don’t like the possibility of a MITM attack between HAProxy and my www servers (however unlikely it is).
Is there a way to prevent the SSL renegotiation when user submits the form and uploads the file to the server?
My
haproxy.cfg:global log /dev/log local0 notice chroot /var/lib/haproxy stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners stats timeout 30s user haproxy group haproxy daemon tune.ssl.default-dh-param 2048 ssl-default-bind-ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256 ssl-default-bind-options no-sslv3 no-tlsv10 no-tlsv11 no-tls-tickets ssl-default-server-ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256 ssl-default-server-options no-sslv3 no-tlsv10 no-tlsv11 no-tls-tickets defaults log global mode http option dontlognull option forwardfor option redispatch timeout connect 15000 timeout client 50000 timeout server 50000 frontend http-in bind :80 bind *:443 ssl crt /etc/haproxy/certificate.pem option forwardfor http-request set-header X-Forwarded-Proto https if { ssl_fc } http-request set-header X-Forwarded-Port %[dst_port] # Redirect if HTTPS is *not* used redirect scheme https code 301 if !{ ssl_fc } # Test URI to see if its a letsencrypt request acl letsencrypt-acl path_beg /.well-known/acme-challenge/ use_backend letsencrypt-backend if letsencrypt-acl default_backend www-backend backend www-backend stick-table type ip size 200k expire 30m stick on src default-server inter 1s balance roundrobin server server1 1.2.3.4:80 check #server server1 1.2.3.4:443 check ssl verify noneAny help is much appreciated!
Posts: 1
Participants: 1