Я нахожусь в процессе переноса веб-сайта для клиента в 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.
Если вы хотите использовать letencrypt, вы можете попробовать это: Heres способ установить сертификаты на единичных узловых серверах узла с единым экземпляром: http://bluefletch.com/blog/domain-agnostic-letsencrypt-ssl-config-for-elastic-beanstalk -Single-экземпляры /
В основном автоматическое расширение .ebextension для установки certbot, получения сертификата и ссылки nginx на него.