Ssl 基于sni的Haproxy TLS端接和直通

Ssl 基于sni的Haproxy TLS端接和直通,ssl,haproxy,sni,Ssl,Haproxy,Sni,我有类似的请求路径: client mydomain.com -> nlb:443 -> haproxy -> cloudfront client a.mydomain.com -> nlb:443 -> haproxy -> target_group_a 其主要思想是对主域名进行tls传递,并在不终止tls的情况下将其发送到cloudfront。进入a.mydomain.com的请求应传递给target\u group\u a,并应终止tls。因此,我的配

我有类似的请求路径:

client mydomain.com -> nlb:443 -> haproxy -> cloudfront
client a.mydomain.com -> nlb:443 -> haproxy -> target_group_a
其主要思想是对主域名进行tls传递,并在不终止tls的情况下将其发送到cloudfront。进入
a.mydomain.com
的请求应传递给
target\u group\u a
,并应终止tls。因此,我的配置是:

frontend main
    bind *:443
    mode tcp
    option tcplog
    log global

    tcp-request inspect-delay 5s

    acl is_main req_ssl_sni -i "${pDomainName}"
    acl is_a req_ssl_sni -m beg "a"

    tcp-request content accept if { req_ssl_hello_type 1 }

    use_backend main if is_main
    use_backend a if is_a

backend main
    mode tcp
    option ssl-hello-chk
    server cloudfront "${pCloudFrontUrl}:443" check resolvers aws

backend a
    mode tcp
    server local 127.0.0.1:9666 send-proxy

frontend a
    bind *:9666 ssl crt server.pem ca-file ca.pem verify required accept-proxy
    mode http

    default_backend proxy_a

backend proxy_a
    mode http
    server elb "${pServer}:80" check resolvers aws
主记录传递成功,我得到CloudFront SSL终止,一切正常,但不适用于
a.mydomain.com

我还试着观察SNI Haproxy是如何捕获的,但我在日志中只得到了
capture0:-
。我确实喜欢(就在tcp检查线之后)

这很奇怪,因为路由是有效的

我尝试了很多可能性。。现在我得到的
SSL对等握手失败,服务器很可能需要客户端证书来连接
错误,但是如果我在另一个端口上以
http
模式监听前端
a
,一切正常


也许我错过了一些基本的东西,但我已经坚持了很长时间,也许有人可以帮助我。

对于正在或将要遭受这种情况的人,请确保您正在使用gnu版本的curl进行测试(或使用适当的库构建它),因为它不适合我使用BSD curl。我的curl版本和libs

curl 7.66.0 (x86_64-apple-darwin17.7.0) libcurl/7.66.0 SecureTransport zlib/1.2.11
Release-Date: 2019-09-11
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp 
Features: AsynchDNS IPv6 Largefile libz NTLM NTLM_WB SSL UnixSockets

我发现,如果我发送带有客户端证书的请求,就不会有sni,只有
-
,试图深入挖掘。
curl 7.66.0 (x86_64-apple-darwin17.7.0) libcurl/7.66.0 SecureTransport zlib/1.2.11
Release-Date: 2019-09-11
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp 
Features: AsynchDNS IPv6 Largefile libz NTLM NTLM_WB SSL UnixSockets