Проблемы при попытке настроить SSL на веб-сервере AWS Elastic Beanstalk (один экземпляр) Переполнение стека

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

Resources:
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupName: {Ref : AWSEBSecurityGroup}
IpProtocol: tcp
ToPort: 443
FromPort: 443
CidrIp: 0.0.0.0/0

packages:
yum:
mod24_ssl : []

files:
/etc/httpd/conf.d/ssl.conf:
mode: "000755"owner: root
group: root
content: |
LoadModule ssl_module modules/mod_ssl.so
Listen 443
<VirtualHost *:443>
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
SSLEngine on
SSLProtocol All -SSLv2 -SSLv3
SSLCertificateFile "/etc/pki/tls/certs/server.crt"SSLCertificateKeyFile "/etc/pki/tls/certs/server.key"
ProxyPass / http://localhost:80/ retry=0
ProxyPassReverse / http://localhost:80/
ProxyPreserveHost on

LogFormat "%h (%{X-Forwarded-For}i) %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""ErrorLog /var/log/httpd/elasticbeanstalk-error_log
TransferLog /var/log/httpd/elasticbeanstalk-access_log
</VirtualHost>

/etc/pki/tls/certs/server.crt:
mode: "000400"owner: root
group: root
source: sourceHere

/etc/pki/tls/certs/server.key:
mode: "000400"owner: root
group: root
source: sourceHere

где sourceHere — ссылка на файл в S3, я также пытался использовать контент непосредственно вместо источника, но результат тот же, приложение запускается без каких-либо ошибок, но любые попытки подключиться к IP-адресу или указанному URL-адресу просто говорят, что страница недоступна. Если я создаю тот же zip-файл, но оставляю конфигурационные файлы, которые он создает правильно. Это именно то, что есть на странице поддержки AWS и в документации по Elastic Beanstalk, поэтому я не уверен, что происходит.

5

Решение

В вашем конфигурационном файле есть проблема с отступом: /etc/pki/tls/certs/server.crt а также /etc/pki/tls/certs/server.key должен быть на том же уровне, что и /etc/httpd/conf.d/ssl.conf,

Вы должны исправить отступ, чтобы получить:

files:
/etc/httpd/conf.d/ssl.conf:
mode: "000755"owner: root
group: root
content: |
LoadModule ssl_module modules/mod_ssl.so
Listen 443
<VirtualHost *:443>
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
SSLEngine on
SSLProtocol All -SSLv2 -SSLv3
SSLCertificateFile "/etc/pki/tls/certs/server.crt"SSLCertificateKeyFile "/etc/pki/tls/certs/server.key"
ProxyPass / http://localhost:80/ retry=0
ProxyPassReverse / http://localhost:80/
ProxyPreserveHost on

LogFormat "%h (%{X-Forwarded-For}i) %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""ErrorLog /var/log/httpd/elasticbeanstalk-error_log
TransferLog /var/log/httpd/elasticbeanstalk-access_log
</VirtualHost>

/etc/pki/tls/certs/server.crt:
mode: "000400"owner: root
group: root
source: sourceHere

/etc/pki/tls/certs/server.key:
mode: "000400"owner: root
group: root
source: sourceHere
2

Другие решения

Вместо того, чтобы предоставлять SSL через .ebextensions, вы должны посмотреть, как добавить его через балансировщик нагрузки в разделе Конфигурация среды Elastic Beanstalk >> Уровень сети >> Балансировка нагрузки.

введите описание изображения здесь

Самый простой способ, кроме использования инструментов CLI, — создать балансировщик нагрузки EC2 и добавить ключи. После того, как вы пройдете этап 2 (Выбрать сертификат), вы можете прервать его, и сертификат будет сохранен для использования Elastic Beanstalk.

  1. Создать балансировщик нагрузки
  2. Добавить HTTPS

введите описание изображения здесь

  1. Добавить закрытый ключ, сертификат открытого ключа, цепочку сертификатов.
  2. Продолжить, затем прервать.
  3. Сертификат SSL теперь будет доступен в вашей среде Elastic Beanstalk.

введите описание изображения здесь

8

Если вы хотите использовать letsencrypt, вы можете попробовать это: Вот способ установить сертификаты на серверы узлов с одним экземпляром beanstalk: http://bluefletch.com/blog/domain-agnostic-letsencrypt-ssl-config-for-elastic-beanstalk-single-instances/

В основном это автоматический .ebextension для установки certbot, получения сертификата и привязки к нему nginx.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector