Нужен ли каждому серверу за балансировщиком нагрузки свой собственный сертификат SSL?

66

Если у вас есть 5 веб-серверов за балансировщиком нагрузки (например, haproxy), и они обслуживают контент для одного и того же домена, вам нужны сертификаты SSL для всех серверов или вы можете использовать один и тот же сертификат на каждом сервере?

Я знаю, что вы можете разместить все запросы SSL на определенном сервере, но для этого требуется информация о распределенном сеансе, и я надеюсь, что этого не произойдет.

Дерек Гатрайт
источник

Ответы:

66

Если у вас есть 5 веб-серверов за балансировщиком нагрузки (...), вам нужны сертификаты SSL для всех серверов,

По-разному.

Если вы выполняете балансировку нагрузки на уровне TCP или IP (уровень OSI 4/3, он же L4, L3), то да, на всех серверах HTTP должен быть установлен сертификат SSL.

Если вы загружаете баланс на уровне HTTPS (L7), то обычно вы устанавливаете сертификат только на балансировщике нагрузки и используете обычный незашифрованный HTTP по локальной сети между балансировщиком нагрузки и веб-серверами (для лучшей производительности на веб-серверы).

Если у вас большая установка, возможно, вы выполняете Интернет -> Балансировка нагрузки L3 -> Уровень концентраторов SSL L7 -> Балансировщики нагрузки -> Уровень серверов приложений L7 HTTP ...

Вилли Тарро, автор HAProxy, имеет очень хороший обзор канонических способов балансировки нагрузки HTTP / HTTPS .

Если вы устанавливаете сертификат на каждом сервере, то обязательно получите сертификат, который это поддерживает. Обычно сертификаты могут быть установлены на нескольких серверах, если все серверы обслуживают трафик только для одного полностью квалифицированного доменного имени. Но проверьте, что вы покупаете, у эмитентов сертификатов может быть запутанный портфель продуктов ...

Джеспер Мортенсен
источник
1
Теперь вы можете приобрести сертификаты с альтернативными именами субъектов у многих эмитентов. Поле SAN позволяет сертификат, действительный для нескольких FQDN. ПРЕДУПРЕЖДЕНИЕ ... Могут быть некоторые проблемы со старыми веб-клиентами (IE6!), В некоторых случаях клиент не будет читать атрибут SAN, если атрибут Subject имеет недопустимое полное доменное имя.
Райан Фишер
4
Плюс 1 за ссылку на эту прекрасную статью Вилли Тарро.
Натан Хартли
В средних и крупных установках разгрузка SSL на Big IP или другом распределителе нагрузки (второй вариант, перечисленный выше) имеет преимущества в том, что она быстрее, более масштабируема, менее сложна (как правило, один сертификат на LB) и дешевле по сравнению с сертификатом. сторона лицензирования (многодоменные и SAN-сертификаты становятся дорогими).
Даррелл Тиг
15

Вы должны иметь возможность использовать один и тот же сертификат на каждом сервере. Если ваш веб-сайт www.gathright.com, вы сможете купить сертификат для этого полного доменного имени. Затем вы устанавливаете его на каждом из ваших 5 серверов за балансировщиком.

Кроме того, вы можете получить отдельный сертификат для каждого веб-сервера, но включить «www.gathright.com» в качестве «альтернативного имени субъекта», что означает, что каждый из 5 сертификатов будет действительным как для SSL к этому общему FQDN, так и для SSL к полному доменному имени конкретного сервера.

Райан Фишер
источник
6
Чтобы уточнить этот ответ, вы установите сертификат на сервере, который сгенерировал запрос. Затем вы должны экспортировать сертификат с этого сервера вместе с закрытым ключом, чтобы импортировать его на другие серверы.
Чарльз
D'о! Да, я забыл упомянуть, что вам нужно экспортировать закрытый ключ. Спасибо, Чарльз.
Райан Фишер
Но если я использую сертификаты SAN на каждом сервере, нужен ли каждому из них один и тот же закрытый ключ?
Anschoewe
@anschoewe, нет. У каждого из них будет свой закрытый ключ, и вам придется заплатить 5 раз, если у вас будет 5 компьютеров.
Алексис Уилк
1
@AlexisWilke - не уверен, что это значит: если они используют сертификат SAN, им нужен только один сертификат, а следовательно, один ключ и, следовательно, 1 цена. Сертификаты SAN могут использоваться на нескольких серверах для обслуживания одного или нескольких доменов; цена увеличивается при добавлении доменов , а не при добавлении серверов
dwanderson
12

ДА , вы можете использовать один и тот же сертификат и связанный с ним закрытый ключ на всех ваших серверах, если они находятся за балансировщиком нагрузки или обратным прокси-сервером с балансировкой нагрузки, и если все они обслуживают контент для одного домена.

Сертификаты, подписанные центром сертификации, подтверждают, что центр сертификации подтвердил имя, указанное в сертификате. Для сертификатов для веб-сайтов это означает доменное имя веб-сайта. Ваш браузер ожидает, что сервер, с которым он разговаривает, если он разговаривает по HTTPS, представляет сертификат с тем же именем, что и доменное имя, с которым браузер думает, что он разговаривает. (Например, VeriSign вряд ли подпишет сертификат Hacker Joe для bankofamerica.com. Поэтому даже если Hacker Joe удастся перехватить трафик между вами и bankofamerica.com, у Hacker Joe не будет подписанного сертификата для bankofamerica.com и вашего браузера повесит большие красные предупреждающие флаги повсюду.)

Важно то, что имя в сертификате совпадает с именем домена, с которым браузер считает, что оно говорит. Вы можете использовать один и тот же сертификат (со связанным закрытым ключом) с правильным именем на нескольких веб-серверах в веб-кластере, если они находятся за балансировщиком нагрузки.

Вы также можете использовать балансировщик нагрузки с SSL-завершением, в этом случае вы будете использовать сертификат (с соответствующим закрытым ключом) на балансировщике нагрузки, и веб-серверам не понадобятся сертификаты, потому что они не будут иметь ничего общего с SSL.

yfeldblum
источник
6

Наша установка сработала очень хорошо:

https trafic
     |
   pound
     |
http traffic
     |
  haproxy
     |
http traffic 
     |
web server 1 ... web server n

Таким образом, фунт расшифровывает трафик, с этого момента все прямо http. Преимущества: меньше настроек на веб-серверах, один инструмент для каждой работы. Вы можете максимально увеличить нагрузку на процессор и поддерживать веб-серверы в нормальном состоянии. Вы должны получить по крайней мере два из каждого (фунт, haproxy, веб-серверы), если важно время безотказной работы.

jotango
источник
2
Это также предполагает, что ваши внутренние серверы находятся в безопасной частной сети. В облаке это не всегда так ...
Алексис Уилк
3

AFAIR, вы можете использовать один и тот же сертификат на каждом сервере. Вы также можете внедрить ускоритель SSL и разгрузить весь трафик SSL на него.

joeqwerty
источник