Пример https для одного экземпляра Elastic Beanstalk с json

Я искал пример с форматом JSON, а не YAML, чтобы иметь возможность настраивать https в одном экземпляре сервера Elastic Beanstalk. Файл внутри .ebextensions/singlehttps.config Единственный экземпляр настолько важен для приложений низкого уровня, поскольку нам не нужно использовать балансировщик нагрузки, который стоит дополнительно 20 долларов в месяц.


person anestis    schedule 07.12.2015    source источник


Ответы (1)


После стольких хлопот я публикую свое творение здесь для всех, кто борется с той же проблемой. Это было протестировано на сервере PHP.

{
    "files": {
        "/etc/pki/tls/certs/server.crt": {
            "owner": "root",
            "source": "amazon/s3/url/server.crt",
            "group": "root",
            "mode": "000700"
        },
        "/etc/pki/tls/certs/server.key": {
            "owner": "root",
            "source": "amazon/s3/url/server.key",
            "group": "root",
            "mode": "000700"
        },
        "/etc/pki/tls/certs/gd_bundle.crt": {
            "owner": "root",
            "source": "amazon/s3/url/gd_bundle.crt",
            "group": "root",
            "mode": "000700"
        },
        "/etc/httpd/conf.d/ssl.conf": {
            "owner": "root",
            "content": "LoadModule ssl_module modules/mod_ssl.so\nListen 443\n<VirtualHost *:443>\n  <Proxy *>\n    Order deny,allow\n    Allow from all\n  </Proxy>\n\n  SSLEngine             on\n  SSLCertificateFile    \"/etc/pki/tls/certs/server.crt\"\n  SSLCertificateKeyFile \"/etc/pki/tls/certs/server.key\"\n  SSLCertificateChainFile \"/etc/pki/tls/certs/gd_bundle.crt\"\n  SSLCipherSuite        EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH\n  SSLProtocol           All -SSLv2 -SSLv3\n  SSLHonorCipherOrder   On\n  SSLSessionTickets     Off\n\n  Header always set Strict-Transport-Security \"max-age=63072000; includeSubdomains; preload\"\n  Header always set X-Frame-Options DENY\n  Header always set X-Content-Type-Options nosniff\n\n  ProxyPass / http://localhost:80/ retry=0\n  ProxyPassReverse / http://localhost:80/\n  ProxyPreserveHost on\n  RequestHeader set X-Forwarded-Proto \"https\" early\n\n  LogFormat \"%h (%{X-Forwarded-For}i) %l %u %t \\\"%r\\\" %>s %b \\\"%{Referer}i\\\" \\\"%{User-Agent}i\\\"\"\n  ErrorLog /var/log/httpd/elasticbeanstalk-error_log\n  TransferLog /var/log/httpd/elasticbeanstalk-access_log\n</VirtualHost>\n",
            "group": "root",
            "mode": "000644"
        }
    },
    "packages": {
        "yum": {
            "mod24_ssl": []
        }
    },
    "Resources": {
        "sslSecurityGroupIngress": {
            "Type": "AWS::EC2::SecurityGroupIngress",
            "Properties": {
                "ToPort": 443,
                "IpProtocol": "tcp",
                "GroupId": {
                    "Fn::GetAtt": [
                        "AWSEBSecurityGroup",
                        "GroupId"
                    ]
                },
                "FromPort": 443,
                "CidrIp": "0.0.0.0/0"
            }
        },
        "AWSEBAutoScalingGroup": {
            "Metadata": {
                "AWS::CloudFormation::Authentication": {
                    "S3Auth": {
                        "roleName": {
                            "Fn::GetOptionSetting": {
                                "Namespace": "aws:asg:launchconfiguration",
                                "DefaultValue": "aws-elasticbeanstalk-ec2-role",
                                "OptionName": "IamInstanceProfile"
                            }
                        },
                        "buckets": [
                            "amazons3bucket"
                        ],
                        "type": "s3"
                    }
                }
            }
        }
    }
}
person anestis    schedule 07.12.2015