Haproxy ssl重定向握手失败

时间:2015-12-16 17:39:05

标签: redirect ssl haproxy

我有haproxy v1.5.4使用http& HTTPS。我有约束力*:80& :* 443到同一个前端并使用相同的acls。

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

change[n]

这会导致

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

当我通过http访问时(期望重定向)

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

10.XXXXX:36909 [16/Dec/2015:17:23:07.678] http-in/2: SSL handshake failure

自签名证书验证并在没有重定向的情况下工作。感觉就像我在重定向阶段缺少一些东西。

任何帮助非常感谢

1 个答案:

答案 0 :(得分:0)

由于我们将HAProxy插件与仅具有GUI的OPNsense一起使用,因此我无法给出包含工作代码的答案。但是,我可以追溯最终使这项工作成功的步骤。

  1. 照常设置映射规则
  2. 使用功能http-request redirect scheme https
  3. 设置规则HTTP_REDIRECT,不带任何条件
  4. 创建两个公共服务,一个用于端口443,另一个用于端口80
  5. 使用SSL卸载和您的映射规则为443设置公共服务
  6. 为80个 SSL卸载设置公共服务,并且仅设置HTTP_REDIRECT规则

我怀疑这会转化为如下代码:

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

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