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

Я нахожусь в процессе переноса веб-сайта для клиента в 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, поэтому я не уверен, что происходит.

В вашем файле конфигурации есть проблема с отступом: /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 

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

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

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

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

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

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

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

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

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