У меня есть работающая терминация SSL с STunnel перед HAproxy.
Недавно передо мной встал вопрос о добавлении поддержки HTTP/2.
Это легко с HAProxy, но в качестве ограничения STunnel должен остаться.
Причина, по которой STunnel необходимо оставить, — около 17 000 строк SNI и возможность управления ими через уже существующий API.
Я вполне мог бы добавить список сертификатов для HAProxy, содержащий SNI, пара greps и echo сделают галочку.
Однако во время моих поисков я еще не нашел никого, кто ставил HAProxy перед STunnel перед HAProxy. Это неправильный подход?
Вот над чем я уже начал работать (пока нет SNI — 17000 из них было бы слишком много для поста):
Интерфейс HAProxy (где мне нужно добавить поддержку HTTP/2) с шифрованием в сторону STunnel:
слушать интерфейс
привязать 192.168.1.100:443 прозрачный
режим http
сервер stunnel 127.0.0.100:443 ssl проверить нет
СТуннель
[STunnel]
сертификат = /etc/ssl/certs/cert.pem
шифры =
ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256
-SHA384:DHE-DSS-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA
256:AES256-GCM-SHA384:AES256-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-
RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:DHE-DSS-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-
RSA-AES128-SHA256:DHE-DSS-AES128-SHA256:AES128-GCM-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA
принять = 127.0.0.100:443
подключить = 127.0.0.100:80
задержка = да
параметры = NO_SSLv3
параметры = NO_TLSv1
параметры = NO_TLSv1.1
параметры = NO_TLSv1.3
параметры = CIPHER_SERVER_PREFERENCE
варианты = DONT_INSERT_EMPTY_FRAGMENTS
пересмотр = нет
протокол = прокси
местный = 127.0.0.100
ТАЙМ-АУТclose = 0
HAProxy "бэкэнд"
слушать Интернет
ââââbind 127.0.0.100:80 прозрачный accept-proxy
в режиме http
ââââбаланса
ââââacl SSL-443 src 127.0.0.100
ââââtcp-запрос соединения ожидаемый прокси-уровень4, если STunnel
опция http-keep-alive
ââââтаймаут http-запроса 5s
ââââтайм-аут туннеля 1h
✓ возможность повторной отправки
ââââвариант abortonclose
✅maxconn 40000
❗опция httplog
ââââсервер server1 192.168.1.98:80 проверить
сервер server2 192.168.1.99:80 проверить
Я предположил, что от HAProxy до STunnel требуется шифрование, и мне нужно будет учитывать любые несоответствия протоколов между ними.
Что такое STunnel версия HAProxy? соединение tcp-запроса ожидаемый прокси-уровень 4, если STunnel было бы?
Любая помощь в получении поддержки HTTP/2 с STunnel приветствуется, а также получение «Не делайте этого, это неправильно».
Спасибо,