【发布时间】:2014-09-18 08:56:29
【问题描述】:
我有一个正在运行的 Elastic Beanstalk 实例在一个安全组上运行,该安全组具有入站授权的 http 和 https。但是 https 似乎不起作用...为什么?
第二个问题: 我目前正在为我的域名创建一个 ssl 证书。我应该将它上传到 AWS 的哪个位置?
谢谢
【问题讨论】:
标签: security https amazon-ec2 amazon amazon-elastic-beanstalk
我有一个正在运行的 Elastic Beanstalk 实例在一个安全组上运行,该安全组具有入站授权的 http 和 https。但是 https 似乎不起作用...为什么?
第二个问题: 我目前正在为我的域名创建一个 ssl 证书。我应该将它上传到 AWS 的哪个位置?
谢谢
【问题讨论】:
标签: security https amazon-ec2 amazon amazon-elastic-beanstalk
您可以为您的 Elastic Beanstalk 环境配置 HTTPS。 请阅读以下文件: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/configuring-https.html
您可以使用您喜欢的控制台或 CLI 将您的 SSL 证书上传到 AWS IAM。 您无需直接修改 EC2 实例的安全组。
有关上述文档第 3 步的更多详细信息:
在应用源内名为 .ebextensions 的文件夹中创建一个名为 01-ssl.config 的文件。
将以下内容放入此文件中。
option_settings:
- namespace: aws:elb:loadbalancer
option_name: LoadBalancerHTTPSPort
value: 443
- namespace: aws:elb:loadbalancer
option_name: SSLCertificateId
value: <arn of your ssl certificate>
这些选项设置应自动修改您的安全组入口规则以适当地允许流量。
您可以阅读有关使用 ebextensions here 自定义 Elastic Beanstalk 环境的更多信息。
有关支持的所有选项设置(包括 ELB 设置)的详细信息,请参阅here。 如果您遇到任何问题,请告诉我。
更新
默认情况下,当您创建 Elastic Beanstalk 环境时,它会创建一个 EC2 实例并将其置于 Elastic Load Balancer 后面。如果您不需要负载均衡器,则可以按照here 的说明创建单实例环境,或者您是否已经拥有单实例环境。 拥有单实例环境后,您可以按照here 的说明为您的环境配置 SSL。
关于如何不将证书放入配置文件的更新
由于您不想将 server.crt 文件放在您的 ebextensions 配置文件中,您可以将文件上传到 S3,然后让 Elastic Beanstalk 将该文件直接下载到您的 EC2 实例。在示例 here 中唯一改变的是您使用了 source
而不是 content 来指定文件的内容。在源部分中,您可以放置要下载文件的 URL。
您的 ebextensions 将如下所示:
files:
/etc/pki/tls/certs/server.crt:
mode: "000777"
owner: ec2-user
group: ec2-user
source: <URL>
这样您就不需要将内容放入存储库中。阅读有关文件指令here 的更多信息。
如果您遇到问题,请仔细检查您的 IAM 实例配置文件(用于运行 beanstalk 环境的配置文件)是否可以访问您的 S3 对象。 如果您需要有关 IAM 实例角色和 Elastic Beanstalk 的更多详细信息,请阅读 this 和 this。
【讨论】: