Могу ли я использовать подстановочный знак SNI, совпадающий с HAProxy?

Я осматриваюсь, пытаясь найти пример HAProxy, совпадающего с подстановочными знаками SNI, и мой поиск поднимает вопросы о сертификатах с одинаковыми названиями, но не связанные с ними.

В частности, мне нужно маршрутизировать nonce домены для dvsni с помощью acme / letsencyrpt.

frontend foo_ft_https
    mode tcp
    option tcplog
    bind 0.0.0.0:443

    acl foo_app_letsencrypt req.ssl_sni -i *.acme.invalid
    use_backend foo_bk_letsencrypt if foo_app_letsencrypt

    default_backend foo_bk_default

backend foo_bk_letsencrypt
    mode tcp
    option tcplog

    server foo_srv_letsencrypt 127.0.0.1:3443

backend foo_bk_default
    mode tcp
    option tcplog

    server foo_srv_default 127.0.0.1:8443

Примечание: все произвольные имена имеют префикс "foo_", чтобы читатель мог легко отличить их от ключевых слов, директив и тому подобного.

2 ответа

Решение

+ Изменить

acl foo_app_letsencrypt req.ssl_sni -i *.acme.invalid

в

acl foo_app_letsencrypt req.ssl_sni -m end .acme.invalid

Это не упоминается в официальной документации https://cbonte.github.io/haproxy-dconv/configuration-1.5.html явном виде, но я смог найти другие ресурсы, которые привели меня к правильному результату:

Обратите внимание, что если вы попробуете первый пример, он будет "работать", но "" будет интерпретироваться как литерал "", а не как подстановочный знак.

Даже если это очень старый вопрос, я хотел бы поделиться этим решением, потому что это все еще среди первых результатов Google:

Решение, данное CoolAJ86, не работает для меня (вероятно, оно работает для более старой версии HAProxy). Вместо этого вы можете использовать ssl_fc_sni_end вместо ssl_fc_sni следующим образом:

use_backend apache if { ssl_fc_sni_end domain.com }

Это сделает работу!

Другие вопросы по тегам