【问题标题】:amazon ec2 how to setup https?亚马逊 ec2 如何设置 https?
【发布时间】:2015-03-04 22:45:12
【问题描述】:

我已阅读亚马逊 ec2 设置 https 指南并完成了几个步骤。但它仍然无法正常工作。

  1. 签署 SSL 证书,我使用自签名证书。
  2. 使用 aws iam 将 SSL 证书上传到亚马逊服务器。
  3. 在ec2控制平台,在当前安全组的入站中添加80端口和443端口
  4. 创建新的负载均衡器,在新的负载均衡器中添加带有端口 80 的 http、443 端口和带有上传证书的 https,并在负载均衡器中分配当前实例

最后,我检查了实例的安全组并确保它是正确的。我重新启动实例并且 https 不起作用。健康检查可以通过检查80端口,但不能通过检查443端口。

我错过了任何步骤吗?

【问题讨论】:

  • 嘿,请检查 mod ssl 是否启用?您使用的是哪个操作系统?
  • 系统是amazon VPC基本设置。我猜那是 linux,但我不允许 putty 进入那里。
  • 这是否是 Elastic Beanstalk ?请告诉我清楚的细节
  • 是的,这就是 Elastic Beanstalk。我们使用 ec2 控制台平台创建 Amazon Linux AMI。
  • 您的 Web 服务器是否设置为响应端口 443,或者您希望终止负载均衡器上的 SSL 会话,然后将流量传递到端口 80 上的 Web 服务器?

标签: ssl https amazon-ec2


【解决方案1】:

我知道这篇文章已经有一年了,但我最近遇到了类似的问题,希望有人会觉得这篇文章有用。

我看到您正在使用负载平衡器。您必须执行以下操作:

步骤 1

确保您的 EC2 实例上的端口 443 已打开且未被防火墙阻止。你可以运行

sudo netstat -tlnp

在 linux 上检查哪些端口是打开的。输出应如下所示:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      937/sshd
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      1060/mysqld
tcp6       0      0 :::22                   :::*                    LISTEN      937/sshd
tcp6       0      0 :::443                  :::*                    LISTEN      2798/apache2
tcp6       0      0 :::80                   :::*                    LISTEN      2798/apache2

第二步

确保您的安全组设置如下:

EC2(入站)

  • HTTP TCP 80 负载平衡器
  • HTTPS TCP 443 负载均衡器

负载均衡器(出站)

  • HTTP TCP 80 EC2 实例
  • HTTPS TCP 443 EC2 实例

第三步

确保您的 EC2 实例正在侦听端口 443 (/etc/apache2/ports.conf):

Listen 80
Listen 443

如果您使用的是虚拟主机,请确保它看起来像这样:

<VirtualHost *:80>
     DocumentRoot /var/www/html/mysite.com
     ServerName mysite.com
     ServerAlias www.mysite.com
        <Directory /var/www/html/mysite.com>
                AllowOverride All
                RewriteEngine On
                Require all granted
                Options -Indexes +FollowSymLinks
        </Directory>
</VirtualHost>
<VirtualHost *:443>
     DocumentRoot /var/www/html/mysite.com
     ServerName mysite.com
     ServerAlias www.mysite.com
     SSLEngine on
     SSLCertificateFile /usr/local/ssl/public.crt
     SSLCertificateKeyFile /usr/local/ssl/private/private.key
     SSLCACertificateFile /usr/local/ssl/intermediate.crt
</VirtualHost>

第四步

使用以下命令以 .pem 格式上传您的证书文件:

aws iam upload-server-certificate --server-certificate-name my-server-cert 
--certificate-body file://my-certificate.pem --private-key file://my-private-key.pem 
--certificate-chain file://my-certificate-chain.pem

第四步

在附加了 EC2 实例的负载均衡器上创建一个侦听器。侦听器用于 HTTPS 和端口 443。侦听器将要求提供证书,并且它会列出您从 aws cli 添加的证书。如果未列出,请退出 AWS 控制台并重新登录。

之后,通过 HTTPS 的流量将开始流向您的 EC2 实例。

我有类似的问题,并在这里发布了我的问题和答案:HTTPS only works on localhost

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-23
    • 2015-10-24
    • 2015-09-18
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    相关资源
    最近更新 更多