公司firwall背后的用户无法使用HAProxy

时间:2015-06-30 16:38:36

标签: security ssl https haproxy

我对这一点感到非常难过。我最近在我的网站上安装了SSL证书,SSL终止于我的负载均衡器HAProxy。到目前为止,我的所有常规用户都可以使用安全连接,除了那些主要公司网络后面的用户。

网络背后的人在Chrome中收到此消息:

  

"此网页不可用" "该   https://example.com/的网页可能会暂时停止或可能   已经永久移动到新的网址。"

     

错误代码:ERR_CONNECTION_CLOSED

如果我启用它,他们可以正常访问http://example.com网站(没有SSL)。

我原本想知道这是否是我的密码问题,但这些企业用户也无法访问静态服务器上的文件(使用带有SSL证书的AWS Cloudfront)。

我猜这家公司可能会全面禁止SSL证书,除非有白名单?他们可以访问谷歌(https://google.com)的ssl网站。我的证书有问题吗? Chrome有绿锁,并说我的网站使用现代加密技术。

无论如何,无论如何,确定他们是否无法通过SSL访问我的网站,然后重定向他们以使用非安全版本?我尝试通过HAProxy文档查看,但我遗漏了一些东西,此时有隧道视觉。

感谢所有人。这是我的配置文件:

global
    tune.ssl.default-dh-param 2048
    ssl-default-bind-options no-sslv3
    ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS

    mode http

    option forwardfor
    option http-server-close
    option http-pretend-keepalive

    timeout client  120s
    timeout connect 10s
    timeout tunnel 120s
    timeout client-fin 120s
    timeout server  120s

frontend https-www
    bind *:443 ssl crt /etc/ssl/example_com/example.com.pem
    #using naked domain
    redirect location https://example.com if { hdr_beg(host) -i www }

    acl is_sockjs path_beg /sockjs

    use_backend sockjs if is_sockjs

    default_backend django

frontend all
    bind *:80
    #How do I detect that the ssl site failed for them?
    redirect scheme https  if !{ ssl_fc }

backend sockjs
    reqadd X-Forwarded-Proto:\ http
    balance leastconn
    cookie SERV_ID prefix nocache
    server srv_sockjs1 sockjsserver-ip check cookie s1

backend django
    reqadd X-Forwarded-Proto:\ https
    balance roundrobin
    server srv_static django-server-ip

backend django-nonssl
    reqadd X-Forwarded-Proto:\ http
    balance roundrobin
    server srv_static django-server-ip

1 个答案:

答案 0 :(得分:0)

好的想出来了

这与裸域相关。服务器不喜欢我将https://www.example.com重定向到https://example.com的事实。在进一步阅读时,我现在要做相反的事情,我不支持裸域,现在将https://example.com重定向到https://www.example.com

我也必须在cloudfront上执行此操作,现在我使用www.subdomain.example.com而不是example.com