首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有SSL后端的AWS ELB在SSL流中添加代理协议

带有SSL后端的AWS ELB在SSL流中添加代理协议
EN

Server Fault用户
提问于 2016-05-05 12:46:01
回答 1查看 4.1K关注 0票数 2

注意,这也已在http://thread.gmane.org/gmane.comp.web.haproxy/27737中发布。

我们正在尝试配置这个体系结构:

  • ELB使用预先配置的证书终止SSL。(这是一项要求,因为只有受限制的人才能访问最终用户证书)
  • ELB使用SSL连接到HAproxy后端(也需要)
  • http://amzn.to/1YajEG3所述,ELB发送代理报头
  • HAproxy在443中监听SSL
  • HAProxy用于进行一些HTTP转换(修改头等)。

在将ELB配置为SSL+Proxy协议之后,我们尝试通过在HTTPS前端的绑定中添加接受代理来配置HAProxy:

代码语言:javascript
复制
frontend https-in
    mode http
    # Note, I truncated this line because the maillist 80 chars limitations
    bind :443 accept-proxy ssl crt \
     /var/vcap/jobs/haproxy/config/cert.pem \
     no-sslv3 ciphers ...
    ...

但它失败了:Received something which does not look like a PROXY protocol header

排除故障后,我发现ELB在SSL流中发送代理报头。例如,我将openssl作为服务器运行:

代码语言:javascript
复制
$ openssl s_server -accept 443 -cert cert.pem
...

ACCEPT
bad gethostbyaddr
-----BEGIN SSL SESSION PARAMETERS-----
MFUCAQECAgMDBAIAnwQABDBsAWD78V/tz9KhYw4R/kpL5YPBxfF1qcmzxlclNDuz
0KWw9aGojVogjtBkH/zZOLWhBgIEVyoquqIEAgIBLKQGBAQBAAAA
-----END SSL SESSION PARAMETERS-----
Shared
ciphers:...
CIPHER is DHE-RSA-AES256-GCM-SHA384
Secure Renegotiation IS supported
PROXY TCP4 80.194.77.90 192.168.6.14 39220 443
GET / HTTP/1.1
User-Agent: curl/7.35.0
Host: something.com
Accept: */*

因此,我在HTTP中做了一个“链式”配置,一个用于使用纯TCP进行SSL终端,另一个用于“提取”代理协议并执行HTTP转换:

代码语言:javascript
复制
listen https-in
    mode tcp
    bind :443 ssl crt /var/vcap/jobs/haproxy/config/cert.pem no-sslv3
ciphers ...
    server http 127.0.0.1:8081

frontend http-in-from-ssl
    mode http
    bind :8081 accept-proxy
    option httplog
    option forwardfor
    reqadd X-Forwarded-Proto:\ https
    default_backend http-routers

这很管用!

所以我的问题是:

  • 这是正常和预期的吗?我找不到这方面的任何信息。
  • 是否有可能改变ELB行为,将代理协议头置于SSL流之外?我没有找到任何这方面的信息。
  • 如果不是。是否有可能改变HAProxy的行为以使用一个前端,但从SSL流中读取代理协议头呢?
  • 如果没有,是否有更好的方式‘链配置’,如我上面做的。

谢谢!

EN

回答 1

Server Fault用户

发布于 2017-11-29 02:34:41

以下是您的问题1的信息,请参阅下面的URL。

http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/using-elb-listenerconfig-quickref.html

搜索表的最后一行TCP/SSL负载均衡器(第二个表)。这只是你的案子。上面说得很清楚

不支持代理协议标头。

所以对于你的第二个问题,答案是否定的。

很抱歉,我不能为你的问题3和4提供更多的帮助。(事实上,根据我的经验,对于问题4,我认为你的方式已经足够好了。)也许我的经验还不够;

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/775010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档