我在安全组上运行了一个正在运行的Elastic Beanstalk实例,该安全组在入站时已授权http和https。但https似乎不起作用......为什么?
第二个问题: 我目前正在为我的域名创建一个ssl证书。我应该在哪里上传它?
谢谢
答案 0 :(得分:4)
您可以为Elastic Beanstalk环境配置HTTPS。 请阅读以下文件: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/configuring-https.html
您可以使用您喜欢的控制台或CLI将SSL证书上传到AWS IAM。 您无需直接修改EC2实例的安全组。
有关上述文档第3步的更多详细信息:
在应用源内的名为01-ssl.config
的文件夹中创建名为.ebextensions
的文件。
将以下内容放在此文件中。
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。