Как проверить правило на основе sni haproxy с помощью curl?

Я сделал простую конфигурацию HaProxy для передачи полного трафика на основе поля SNI. Вот мой haproxy.cfg

defaults
    log global
    timeout client 50s
    timeout client-fin 50s
    timeout connect 5s
    timeout server 10s
    timeout tunnel 50s
frontend tcp-0_0_0_0-443
    bind *:443
    mode tcp

    acl sni_acl_example_com req.ssl_sni -m sub example.com
    use_backend example_com_be if sni_acl_example_com

backend example_com_be
    mode tcp
    server name1 93.184.216.34

. Я запускаю HaProxy, используя следующий файл Dockerfile:

FROM haproxy:1.7.9-alpine
COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg
EXPOSE 443

и следующую команду: docker build -t my-haproxy. && docker run -p 443: 443 --rm -d --name my-running-haproxy my-haproxy

Теперь я хотел бы проверить, будет ли правило под названием sni_acl_example_com работать должным образом с использованием cURL .

curl -k -X 'GET' -H 'Host: example.com' --resolve example.com:443:127.0.0.1 https://example.com

Результат:

curl : (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL в связи с example.com:443

Очевидно, что правила не работают и нет подходящего серверного модуля (поэтому я получаю SSL_ERROR_SYSCALL). Если я добавлю default_backend, он будет использоваться вместо этого для выполнения моего запроса.

Почему мой запрос cURL не открывается http://example.com с использованием HaProxy?

Я использую curl 7.54. 0 с последней версией OSX High Sierra.

3
задан 26 December 2017 в 01:38
1 ответ

Разобрался. Запрос cURL абсолютно правильный.

В haproxy.cfg отсутствовали 2 конфигурационных оператора. Для того, чтобы sni-правила работали, вам также потребуется:

tcp-request inspect-delay 5s
tcp-request content accept if { req_ssl_hello_type 1 }

в разделе внешнего интерфейса .

3
ответ дан 3 December 2019 в 06:27

Теги

Похожие вопросы