Назад | Перейти на главную страницу

Как настроить Elastic Load Balancer для балансировки SSL-трафика?

Я полностью потерялся, поэтому прошу прощения, если я не понимаю.

Мне нужно создать балансировщик нагрузки в EC2 для наших серверов приложений. Я пытаюсь заставить ELB балансировать трафик через SSL (8443). Однако он просит у меня сертификат SSL. Похоже, меня спрашивают об открытом и закрытом ключах (в кодировке pem).

На серверах, стоящих за ELB, есть файл хранилища ключей, который наши разработчики создали с помощью программы Oracle Java keytool. Созданный файл является двоичным. Похоже, что ELB ожидает текстовый ключ в формате pem.

  1. Почему ELB требует, чтобы я ввел сертификат? Разве ELB не может просто пересылать SSL-трафик с одной стороны на другую и позволять серверам обрабатывать SSL?
  2. Связаны ли сертификаты / файл хранилища ключей и ключи должны совпадать как на ELB, так и на серверах? В документах AWS говорится, что секретный ключ и сертификат создаются с помощью openssl. Могу ли я просто самостоятельно запустить openssl для создания SSL-сертификата для балансировщика нагрузки и оставить файл хранилища ключей только на серверах?

Заранее спасибо за вашу помощь.

ELB можно использовать одним из двух способов:

  1. Завершение SSL на ELB.

    В этом режиме вы дадите ELB сертификат и ключ. Он расшифрует запрос и передаст его на ваши серверы в незашифрованном виде. Преимущество этого состоит в том, что вы можете снизить нагрузку на ЦП ваших серверов.

  2. ELB просто выполняет роль сквозной передачи.

    ELB может действовать как тупой переход. Сертификат или ключ не потребуется. Чтобы настроить его таким образом, вместо использования параметра HTTPS установите его как порт TCP.

  1. ELB является конечной точкой для клиента. Он добавляет заголовки метаданных и т. Д. ELB в настоящее время не может обслуживать SSL без сертификата.

  2. ELB должен иметь сертификат, который должен быть обращен наружу, но сертификаты на фактических экземплярах могут не совпадать. Они могут быть самозаверяющими. Вам даже не нужно устанавливать сертификаты на свои инстансы, но данные будут передаваться через инфраструктуру AWS между инстансами и ELB. Вы можете создать сертификат любым способом, если он действителен.

Преимущество завершения SSL на вашем балансировщике нагрузки заключается в том, что вы избавляете свои внутренние узлы от необходимости выполнять шифрование / дешифрование SSL.

Таким образом, просто разверните свой закрытый ключ SSL и подписанный сертификат в ELB. Это позаботится о завершении SSL и затем сможет передавать незашифрованный прокси-трафик вашим внутренним экземплярам. Если вы хотите, чтобы трафик между ELB и вашими внутренними экземплярами был зашифрован, это нормально, но вам все равно понадобится ELB, чтобы иметь ваш закрытый ключ и подписанный сертификат.

Что касается получения сертификатов и ключей из хранилища ключей Java, это, безусловно, возможно. Это вопросы и ответы на Stackoverflow есть подробности.