亚马逊 ec2 如何设置 https?

Posted

技术标签:

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

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

    签署 SSL 证书,我使用自签名证书。 使用 aws iam 将 SSL 证书上传到亚马逊服务器。 在ec2控制平台,在当前安全组的入站中添加80端口和443端口 创建新的负载均衡器,在新的负载均衡器中添加带有端口 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 服务器? 【参考方案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

【讨论】:

以上是关于亚马逊 ec2 如何设置 https?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 putty 在亚马逊 ec2 上设置文件夹权限

亚马逊 EC2 + SSL

如何将 datastax 开发中心连接到亚马逊 EC2 实例中的远程集群?

亚马逊云EC2助力5G产品测试

如何将电子邮件适配器添加到我的亚马逊 EC2 实例以启用我的应用程序的密码重置

亚马逊AWS学习-创建EC2 windows