为什么Https不能在EC2上工作?

时间:2014-07-26 17:40:24

标签: security https amazon-ec2 amazon elastic-beanstalk

我在安全组上运行了一个正在运行的Elastic Beanstalk实例,该安全组在入站时已授权http和https。但https似乎不起作用......为什么?

第二个问题: 我目前正在为我的域名创建一个ssl证书。我应该在哪里上传它?

谢谢

1 个答案:

答案 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的更多详细信息,请阅读thisthis