【问题标题】:Haproxy ssl redirect handshake failureHaproxy ssl 重定向握手失败
【发布时间】:2016-03-22 23:27:33
【问题描述】:

我有使用 http 和 https 的 haproxy v1.5.4。我将 *: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

自签名证书无需重定向即可验证和工作。感觉就像我在重定向阶段遗漏了一些东西。

非常感谢任何帮助

【问题讨论】:

  • 首先猜测是您为后端设置了“验证”,但使用的自签名证书会验证失败。
  • 另外,您是否有意在负载平衡器后端服务器上都拥有 SSL 证书? (2 个单独的证书)
  • 您好,后端有 verify none 作为自签名证书。我想通过 SSL 将流量代理到 apache。我可以终止某些服务的 SSL,但我不想终止 CAS。我认为因为我可以在使用 https 时成功访问后端,所以重定向应该可以正常工作
  • 你搞清楚了吗?
  • 有人解决这个问题吗?

标签: redirect ssl haproxy


【解决方案1】:

由于我们使用带有 OPNsense 的 HAProxy 插件,它只有一个 GUI,所以我无法给出包含工作代码的答案。但是,我可以追溯最终使这项工作对我们有用的步骤。

  1. 照常设置映射规则
  2. 设置规则 HTTP_REDIRECT 不带任何条件但使用函数http-request redirect scheme https
  3. 创建两个公共服务,一个用于443端口,一个用于80端口
  4. 使用 SSL 卸载和映射规则为 443 设置公共服务
  5. 为 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

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

【讨论】:

    猜你喜欢
    • 2021-12-28
    • 2018-07-28
    • 2012-10-11
    • 2015-03-16
    • 2018-10-17
    • 2016-04-29
    • 2014-03-05
    • 1970-01-01
    相关资源
    最近更新 更多