AWS: создайте новую среду (tomcat-single-instance): .ebextensions с SSL-сертификатом — не запускается

Elastic Beanstalk: создайте новую среду: .ebextensions с SSL-сертификатом не запускается (tomcat-single-instance)

Я пытаюсь создать новую среду с текущим производственным пакетом WAR.

Развертывание нового экземпляра завершилось неудачно и получило статус «Зеленый». Первоначально мы следовали этому образцу для создания расширений .ebextensions (https://s3.amazonaws.com/elasticbeanstalk-single-instance-ssl-demo/tomcat-single-instance.zip ) и расширили, как описано здесь https ://docs.aws.amazon.com/elasticbeanstalk/latest/dg/https-singleinstance-tomcat.html .

New Platform: Managed, Tomcat 8.5 with Java 8 on 64bit Amazon Linux
Platform version: 3.4.1(Recommended)

Ошибка:

httpd24-tools conflicts with httpd-tools-2.2.34-1.16.amzn1.x86_64
mod24_ssl conflicts with 1:mod_ssl-2.2.34-1.16.amzn1.x86_64
httpd24 conflicts with httpd-2.2.34-1.16.amzn1.x86_64

Чтобы устранить эту ошибку, я заменил

packages:
  yum:
    mod_ssl : []

с

packages:
  yum:
    mod24_ssl.x86_64 : []

Но это вызвало эту ошибку:

Httpd configuration detected in the '.ebextensions/httpd' directory. AWS Elastic Beanstalk will no longer manage the httpd configuration for this environment.
Executing: /usr/sbin/apachectl -t -f /var/elasticbeanstalk/staging/httpd/conf/httpd.conf
httpd: Syntax error on line 21 of /var/elasticbeanstalk/staging/httpd/conf/httpd.conf: Include/IncludeOptional: No matches for the wildcard '*.conf' in '/etc/httpd/conf.d/elasticbeanstalk', failing
Failed to execute '/usr/sbin/apachectl -t -f /var/elasticbeanstalk/staging/httpd/conf/httpd.conf'
Failed to execute '/usr/sbin/apachectl -t -f /var/elasticbeanstalk/staging/httpd/conf/httpd.conf' (Executor::NonZeroExitStatus)

AWS просит заменить текущий производственный сервер (Amazon Linux/2.3.1) без промедления, поскольку он «списан». Я также опубликовал этот вопрос на AWS Forum. Пожалуйста помоги.

Я думаю, что вы на правильном пути при применении нового пакета модов ssl. @ Рой, не могли бы вы указать, как выглядит ваш файл httpd.conf? Я предполагаю, что вы включили некоторую конфигурацию, подобную примерам, приведенным в разделе «Расширение и переопределение конфигурации Apache по умолчанию» в документации AWS, это правильно?

jccampanero 30.12.2020 20:20

@jccampanero Спасибо за ваш ответ. Разница только в том, что у меня нет «myconf.conf» в папке «conf.d». Я следовал примеру AWS (s3.amazonaws.com/elasticbeanstalk-single-instance-ssl-demo/‌​…). Мой рабочий сервер отлично работает последние два года на Amazon Linux 2.3.1. Единственная проблема заключается в том, что я не могу перейти на рекомендованный AWS Amazon Linux 3.4.1.

Roy 31.12.2020 07:29

Я включил ответ @Roy, надеюсь, это поможет.

jccampanero 31.12.2020 14:52
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
444
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Спаси себя от боли. Не настраивайте SSL на своем сервере Tomcat, сделайте это на ELB AWS Elastic Load Balancer.

Благодарим за ваше предложение. Я использую ebextensions с SSL в производстве (Amazon Linux 2.3.1). После настройки скрипт работает отлично. Стоимость конфигурации SSL с одним экземпляром составляет всего 30 % по сравнению с Elastic Load Balancer. Надеюсь, кто-нибудь сможет ответить на мой вопрос.

Roy 29.12.2020 07:22

Вы также можете настроить SSL в Cloudfront. Честно говоря, Рой, мой старый друг, вы просто испытаете боль, ничего не получите, потеряете возможность автоматического обновления сертификатов, рискуете безопасностью при управлении частными сертификатами, это просто бесполезно. Не знаю, откуда вы берете эти расходы, но почти уверен, что после того, как вы потратите больше времени и проведете все расчеты, вы потеряете $$$$$.

Derrops 29.12.2020 07:30

Я не мог не согласиться с этим. Настройка SSL через ALB/ELB намного проще и безопаснее, чем ручная настройка.

Alex Bailey 01.01.2021 15:41
Ответ принят как подходящий

Как указано в документации AWS:

Начиная с конфигураций платформы Tomcat версии 3.0.0, которые были выпущены с обновлением Java с платформой Tomcat 24 мая 2018 г., Apache 2.4 является прокси-сервером по умолчанию для платформы Tomcat.

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

Затем, чтобы избежать упомянутой проблемы с SSL, каталог .ebextensions должен включать только удобный ssl.conf и скрипт environment.config, представленный в образце zip-файла, указанного в вопросе, без раздела packages, потому что mod_ssl уже установлен в образе beanstalk.

В данном конкретном случае возникли дополнительные проблемы, связанные с созданием файлов, необходимых для логирования. После настройки пути на тот, в котором приложение имеет возможность записи, по умолчанию для Tomcat в Beanstalk, /var/logs/tomcat8, все работает правильно.

Спасибо за ваш ответ. Я уже пробовал IncludeOptional в файле httpd.conf. Это обошло сопоставление с подстановочными знаками, но дало мне: AH00534: httpd: Ошибка конфигурации: MPM не загружен. После этого я не мог добиться никакого прогресса.

Roy 31.12.2020 20:19

Спасибо. Я создал учетную запись, но там написано, что ответ "ЭКСКЛЮЗИВНОЕ СОДЕРЖИМОЕ ПОДПИСЧИКА". Если у вас есть доступ к ответу, пожалуйста, опубликуйте ответ здесь.

Roy 01.01.2021 06:33

Привет @Рой. Во-первых, извините за быстрые ответы вчера, у меня не было времени, чтобы объяснить меня лучше. Как я уже говорил, я думаю, что проблема связана с конфигурацией модуля MPM, необходимого для Apache 2.4. Я обновил ответ информацией, ранее описанной в моих предыдущих комментариях. Я надеюсь, что это помогает.

jccampanero 01.01.2021 12:04

Спасибо @jccampanero. Теперь я столкнулся с новой ошибкой. Я попробовал все три варианта mod_mpm один за другим. Но все это привело к одной и той же ошибке: Выполнение: /usr/sbin/apachectl -t -f /var/elasticbeanstalk/staging/httpd/conf/httpd.conf AH00526: синтаксическая ошибка в строке 16 файла /etc/httpd/conf.d/ autoindex.conf: недопустимая команда «IndexOptions», возможно, написана с ошибкой или определена модулем, не включенным в конфигурацию сервера. Не удалось выполнить «/usr/sbin/apachectl -t -f /var/elasticbeanstalk/staging/httpd/conf/httpd. conf 'Не удалось выполнить '/usr/sbin/apachectl -t -f /var/elasticbeanstalk/staging/httpd/conf/httpd.conf'

Roy 01.01.2021 17:10

Привет, Рой. Сожалею, что у вас возникла новая ошибка. Я думаю, что это не связано с предыдущим. Проблема, по-видимому, связана с некоторой настройкой, необходимой для модуля автоиндексации. Вы можете попробовать загрузить модуль в свой httpd.conf файл, LoadModule autoindex_module modules/mod_autoindex.so - пожалуйста, проверьте наличие библиотеки - хотя я думаю, что стоит попытаться понять, где требуется этот функционал. Я предполагаю, что он загружается при включении другой конфигурации в каталог conf.d, когда применяется IncludeOptional conf.d/*.conf.

jccampanero 01.01.2021 17:31

Если у вас есть возможность подключиться по ssh к виртуальной машине, которая поддерживает вашу установку, вы можете ввести apachectl configtest, чтобы проверить правильность вашей конфигурации, прежде чем запускать Apache.

jccampanero 01.01.2021 17:35

@Roy Если конфигурация Apache 2.4 вызывает проблемы, мой лучший совет: если у вас есть возможность, создайте новую среду beanstalk с нуля для Amazon Linux 3.4.1 без какой-либо настройки. Он предоставит вам свежую и рабочую конфигурацию tomcat и Apache. С этой рабочей конфигурацией попробуйте затем настроить поведение SSL, это должно быть просто, вместо того, чтобы использовать и пытаться адаптировать старую конфигурацию, описанную в предоставленном вами zip-файле.

jccampanero 01.01.2021 18:46

Благодарим вас за помощь @jccampanero. Я могу запустить инстанс Amazon Linux 3.4.1 без расширения .ebextensions в своем WAR-пакете. Это прекрасно работает без SSL. Однако мне нужно избегать внесения каких-либо изменений через SSH в EC2. Следовал вашим предложениям, и в это время я добрался до файла ssl.conf. Новая ошибка: Выполнение: /usr/sbin/apachectl -t -f /var/elasticbeanstalk/staging/httpd/conf/httpd.conf AH00526: синтаксическая ошибка в строке 18 файла /etc/httpd/conf.d/ssl.conf : Недопустимая команда «SSLPassPhraseDialog».

Roy 01.01.2021 21:02

Пожалуйста, @Roy;). Теперь проблема в SSL. Сначала проверьте, установлен ли модуль, заглянув в папку /etc/httpd/modules/ и попытавшись найти mod_ssl.so. Если он не установлен, вам необходимо установить его с помощью пакета mod24_ssl.x86_64, как вы указали в вопросе. В любом случае, после его установки или из-за того, что модуль уже был установлен, необходимо настроить ssl.conf. Поместите только этот файл в папку .ebextensions/httpd/conf.d. Пожалуйста, проверьте при развертывании, что там правильный файл. Смотрите следующий комментарий

jccampanero 01.01.2021 21:55

Этот файл должен быть автономным. Как следствие, вам нужно включить в него директиву LoadModule ssl_module modules/mod_ssl.so. См., например, этот блог. Конечно, предоставьте в своих расширениях необходимую конфигурацию для вашего сертификата и закрытого ключа. Нет необходимости переопределять https.conf. Я надеюсь, что это помогает.

jccampanero 01.01.2021 22:00

Привет @jccampanero: директива LoadModule ssl_module modules/mod_ssl.so уже есть в образце zip-файла AWS (упоминается в вопросе). Я только добавил свой SSL-сертификат в образец и развернул его в производственной системе, и он все еще работает нормально. Проблема связана с миграцией Amazon Linux 3.4.1. Как вы предложили, я только что попробовал mod24_ssl и mod24_ssl.x86_64 как в environment.config, так и в ssl.config. Иногда развертывание EC2 постоянно терпит неудачу, и мне приходится его прерывать.

Roy 02.01.2021 10:09

Привет, @Roy, утро. Но нет необходимости загружать собственный файл httpd.conf. Идея состоит только в том, чтобы предоставить необходимую конфигурацию SSL, то есть ваш криптографический материал и ssl.conf. Когда вы создали новую среду с нуля, без SSL, вы изменить файл httpd.conf? Почему изначально ОС жаловалась на SSL? Если вы создаете среду с нуля, без настройки SSL, она не должна выдавать никаких ошибок. Вы можете подключиться через ssh к машине ec2, только чтобы проверить, установлен ли уже mod_ssl, и чтобы просмотреть, как файл httpd.conf, предоставленный AWS с нуля выглядит

jccampanero 02.01.2021 11:04

@ Рой, сначала попробуй проверить, нужна ли установка mod_ssl. Как вы можете видеть в документации , которую вы указали , хотя я знаю, что они предоставляют другой файл конфигурации в zip, они не упоминают, что установка mod_ssl необходима. Просто подключите environment.config без установки пакетов yum, только с вашей конфигурацией криптографического материала и файлом ssl.conf. Я предлагаю вам включить директиву LoadModule в ssl.conf. Смотрите следующий комментарий

jccampanero 02.01.2021 11:12

но возможно, в зависимости от конфигурации Apache, это даже не нужно. Ваш каталог .ebextensions будет содержать только два упомянутых файла без раздела пакета yum. Если сочтете нужным, можем пообщаться.

jccampanero 02.01.2021 11:13

Давайте продолжим обсуждение в чате.

Roy 02.01.2021 12:29

Извините за поздний ответ @Roy, я в чате, хотя мне нужно выйти сейчас. Я снова присоединюсь к чату через пару часов. Если хочешь, присоединяйся ко мне там

jccampanero 02.01.2021 13:02

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