Problemas al intentar configurar SSL en AWS Elastic Beanstalk Webserver (instancia única) PHP

Estoy en el proceso de migrar un sitio web para un cliente a AWS. Tengo todo configurado y funcionando, excepto que el cliente desea poder aceptar pagos en su sitio web. Seguí varias guías sobre cómo hacer que SSL funcione usando beanstalk elástico. Actualmente lo tengo configurado para usar un paquete fuente y he creado un archivo de configuración en el archivo .ebextensions que se ve así:

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   Order deny,allow Allow from all  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  /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 

donde sourceHere es el enlace al archivo en S3, también he intentado usar contenido directamente en lugar de la fuente, pero el resultado es el mismo, la aplicación se inicia sin ningún error, pero cualquier bash de conectarse a la dirección IP o URL proporcionada solo dice que la página no está disponible. Si construyo el mismo archivo zip pero dejo fuera los archivos de configuración que construye correctamente. Esto es exactamente lo que AWS tiene en su página de soporte y en la documentación de Elastic Beanstalk, así que no estoy seguro de lo que está sucediendo.

Existe un problema de indentación en su archivo de configuración: /etc/pki/tls/certs/server.crt y /etc/pki/tls/certs/server.key debe estar en el mismo nivel que /etc/httpd/conf.d/ssl.conf .

Debes corregir la sangría para obtener:

 files: /etc/httpd/conf.d/ssl.conf: mode: "000755" owner: root group: root content: | LoadModule ssl_module modules/mod_ssl.so Listen 443   Order deny,allow Allow from all  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  /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 

En lugar de aprovisionar SSL mediante .ebextensions, debería considerar agregarlo a través de Load Balancer en la configuración del entorno de Elastic Beanstalk >> Nivel de red >> Equilibrio de carga.

enter image description here

La forma más sencilla, aparte de utilizar las herramientas CLI, es crear un equilibrador de carga EC2 y agregar las claves. Una vez que pase la etapa 2 (Seleccionar certificado), puede cancelar y el certificado se guardará para el uso de Elastic Beanstalk.

  1. Crear Load Balancer
  2. Agregar HTTPS

enter image description here

  1. Agregar clave privada, certificado de clave pública, cadena de certificados.
  2. Continuar, luego abortar
  3. El certificado SSL ahora estará disponible en su entorno de Elastic Beanstalk.

enter image description here

Si desea utilizar letsencrypt puede intentar esto: Aquí hay una forma de instalar certs en servidores de nodo de beans elásticos de instancia única: http://bluefletch.com/blog/domain-agnostic-letsencrypt-ssl-config-for-elastic-beanstalk -single-instances /

Básicamente, una extensión automática para instalar certbot, obtener un certificado y vincularlo a nginx.