亚马逊ec2如何设置https?

时间:2015-01-07 05:01:31

标签: ssl https amazon-ec2

我已经阅读了amazon ec2指南,用于设置https并完成了几个步骤。但它仍然无法正常工作。

  1. 签署SSL认证,我使用自签名证书。
  2. 使用aws iam将SSL证书上传到amazon服务器。
  3. 在ec2控制平台中,在当前安全组的入站
  4. 中添加端口80和端口443
  5. 创建新的负载均衡器,在端口80中添加http,在新的负载均衡器中添加带有上载的证书的端口443和https,并在负载均衡器中分配当前实例
  6. 最后,我检查了实例的安全组并确保它是正确的。我重新启动实例,https不起作用。运行状况检查可以通过检查端口80传递。但它不会通过检查端口443。

    我是否会错过任何一步?

1 个答案:

答案 0 :(得分:3)

我知道这篇文章已经有一年了,但我最近遇到了类似的问题,希望有人可能会发现这个问题很有用。

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

第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

第2步

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

EC2(INBOUND)

  • HTTP TCP 80 LOAD BALANCER
  • HTTPS TCP 443 LOAD BALANCER

负载均衡器(出站)

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

第3步

确保您的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>

第4步

使用以下命令以.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

第4步

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

HTTPS Listener on Load Balancer

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

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

相关问题