У меня есть работающая установка haproxy, которая выполняет завершение TLS для нескольких доменов клиентов.
Сегодня я добавил сертификат с подстановочными знаками (назовите его * .foo.com) в свой пул сертификатов. haproxy правильно выбирает этот сертификат, когда браузер переходит на https://fnord.foo.com.
Однако по какой-то глупой причине этот пользователь хочет, чтобы его основным доменом был https://www.fnord.foo.com. Когда сертификат с подстановочными знаками устанавливается непосредственно в IIS с выделенной привязкой IP, и URL-адрес пытается обойти haproxy, это работает, хотя я не думаю, что это должно соответствовать строгому определению обработки SSL (см. этот ответ ). Тем не менее, браузеры принимают префикс www, даже если они не должны этого делать, и чтобы этот клиент был доволен, мы все равно хотели бы, чтобы это произошло. Есть ли способ указать haproxy использовать этот конкретный сертификат, когда входящий домен - www.fnord.foo.com?
Не уверен, что сертификат будет охватывать этот домен, но вы можете попробовать загрузить этот сертификат по умолчанию, например
bind 0.0.0.0:443 ssl crt /etc/haproxy/wildcard.foo.com.pem crt /etc/haproxy/other.certs.d
Таким образом, любые запросы, не соответствующие SNI, вернутся к сертификату /etc/haproxy/wildcard.foo.com.pem согласно
https://cbonte.github.io/haproxy-dconv/configuration-1.5.html#5.1-crt
Другой способ заставить его использовать фильтры sni в соответствии с
https://cbonte.github.io/haproxy-dconv/configuration-1.5.html#5.1-crt-list