Как подключить SSL-сертификат к одному экземпляру beanstalk-приложения

У меня есть война Java, которую я хочу разместить на эластичном бобовом стебле на AWS. У меня есть сертификат, но я не могу понять, как подключить его к моему единственному приложению.

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

Я не хочу использовать балансировщик нагрузки, потому что он стоит дополнительно (и не нужен в тестовой среде).

Любая помощь будет оценена.

Ответ 1

Эластичный тип одного экземпляра Beanstalk не поддерживал SSL через консоль управления или API. Вы можете найти дополнительную информацию в Форумы AWS.

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

  • Создайте каталог .ebextensions на верхнем уровне исходного пакета.
  • Скопируйте SSLCertificateFile.crt, SSLCertificateKeyFile.key, SSLCertificateChainFile.crt и ssl.conf (конфигурацию модуля apache2 ssl) в .ebextensions
  • Создайте файл конфигурации /your_app/.ebextensions/01ssl.config. Введите следующее 01ssl.config внутри конфигурационного файла для настройки параметров ssl
  • Откройте 443-портовый порт в группе безопасности

01ssl.config

packages:
  yum:
    mod_ssl: []
container_commands:
  add-SSLCertificateFile-label:
    command: cp .ebextensions/SSLCertificateFile.crt /home/ec2-user/SSLCertificateFile.crt

  add-SSLCertificateKeyFile-label:
    command: cp .ebextensions/SSLCertificateKeyFile.key /home/ec2-user/SSLCertificateKeyFile.key

  add-SSLCertificateChainFile-label:
    command: cp .ebextensions/SSLCertificateChainFile.crt /home/ec2-user/SSLCertificateChainFile.crt

  replace-ssl-configuration-label:
    command: cp .ebextensions/ssl.conf /etc/httpd/conf.d/ssl.conf

Пример ssl.conf

Ваша структура WAR должна выглядеть как

web_app.war
          |
          |_.ebextensions
          |   |_ 01ssl.config
          |   |_ SSLCertificateFile.crt
          |   |_ SSLCertificateKeyFile.key
          |   |_ SSLCertificateChainFile.crt
          |   |_ ssl.conf
          |
          |_META-INF
          |
          |_WEB-INF
               |_ classes
               |_ lib
               |_ web.xml

2013/11/14 Обновлено.

  • Использование файла конфигурации должно быть обращено внимание на проблемы безопасности, поскольку файлы в папке .ebextensions доступны для всех. Это может не произойти в обычной ситуации.
  • В AWS также приведен пример конфигурационного файла для настройка SSL для одного экземпляра.

Ответ 2

Это решение использует бесплатные сертификаты LetsEncrypt и не требует хранения ваших сертификатов в файле конфигурации. И его легко использовать для разных доменов.

http://bluefletch.com/blog/domain-agnostic-letsencrypt-ssl-config-for-elastic-beanstalk-single-instances/

Сводка: файл конфигурации с командами контейнера, который автоматизирует загрузку certbot, получение сертификата и указание nginx на сертификат.