Redirect Haproxy ssl重定向握手失败

Redirect Haproxy ssl重定向握手失败,redirect,ssl,haproxy,Redirect,Ssl,Haproxy,我有haproxy v1.5.4版本使用http和https。我将*:80&:*443绑定到同一前端并使用相同的ACL 我想创建一个http->https重定向 frontend http-in bind *:80 bind *:443 ssl crt /etc/pki/tls/certs/... ... acl is_office path_beg /office http-request redirect scheme https if !{ ss

我有haproxy v1.5.4版本使用http和https。我将*:80&:*443绑定到同一前端并使用相同的ACL

我想创建一个http->https重定向

frontend http-in
    bind *:80
    bind *:443 ssl crt /etc/pki/tls/certs/...

    ...

    acl is_office path_beg /office
    http-request redirect scheme https if !{ ssl_fc } is_office

    use_backend office if is_office
这导致

10.XXXXX:36909 [16/Dec/2015:17:23:07.678] http-in/2: SSL handshake failure
当我通过http访问时(需要重定向)

如果我通过https访问,那么它会正确地命中后端并通过443代理到服务

backend office
  balance roundrobin
  server backbone-daily 10.XXXXXX:443 ssl check verify none
自签名证书在没有重定向的情况下进行验证和工作。感觉我在重定向阶段遗漏了什么


非常感谢任何帮助

因为我们使用了带有OPNsense的HAProxy插件,它只有一个GUI,所以我无法给出包含工作代码的答案。然而,我可以追溯到最终使我们成功的步骤

  • 像往常一样设置映射规则
  • 设置规则HTTP_重定向,无任何条件,但使用函数
    HTTP请求重定向方案https
  • 创建两个公共服务,一个用于端口443,另一个用于端口80
  • 使用SSL卸载和映射规则为443设置公共服务
  • 将公共服务设置为80而不进行SSL卸载,并且仅设置HTTP_重定向规则
  • 我怀疑这会转化为这样的代码:

    frontend http-in
        bind *:443 ssl crt /etc/pki/tls/certs/...
        use_backend office if is_office
    
    frontend no-ssl-http-in
        bind *:80
        http-request redirect scheme https
    

    希望这对仍在寻找解决方案的任何人都有帮助。

    第一个猜测是,您为后端设置了“验证”,但使用的是自签名证书,这会导致验证失败。此外,您是否有意在负载平衡器和后端服务器上都有SSL证书?(2个单独的证书)您好,后端已验证无作为其自签名证书。我想通过SSL代理流量到apache。我可以为某些服务终止SSL,但我不想为CAS终止SSL。我假设,因为我可以在使用https时成功命中后端,重定向应该可以正常工作。你知道了吗?有人找到了解决方案吗?