我的网站的AWS loadbalancer和ssl证书

时间:2013-11-16 17:54:53

标签: ssl amazon-web-services listener load-balancing

我在AWS上使用Apache在AWS负载均衡器后面的2个EC2实例上设置了一个网站。负载均衡器有一个ssl证书(成功流动this manual)Godaddy有一个指向负载均衡器IP的网站的A记录(不能使用DNS名称)

在我安装了本地ssl证书的单个实例之前,它运行良好。

我的问题是: 1.当我使用http://进入我的新网站时,它显示正确,但在地址栏中我没有看到任何ssl证书。 (我是否还需要使用本地.htaccess进行ssl重定向?如果是,我是否需要使用我生成负载均衡器ssl的密钥?)

  1. 当我使用httpS://访问我的网站时,证书在地址栏中显示正确的数据,但网站看起来像一长串的图片和文字。
  2. 负载均衡器侦听器配置为: HTTP 80> HTTP 80 HTTPS 443> HTTP 80(带我的证书)

    感谢您的帮助, 亚历克斯。

2 个答案:

答案 0 :(得分:1)

你有两个问题。

如果要进行重定向,从非ssl到ssl,则需要检测流量是否来自非ssl端口。

通常,您可以通过检测用户所在的端口并重定向发送到端口80的所有内容来执行此操作。如果将443侦听器流量移动到80以外的端口,您仍可以执行此操作。

另一个选项是根据X-Forwarded-Proto标题的值重定向。

对于您的其他问题,您可能会请求一些资源,如css文件,而不是SSL。浏览器将阻止此类活动。

答案 1 :(得分:0)

为了补充答案,如果在DNS A记录中使用弹性负载均衡器IP,则会出现另一个问题。首先,AWS为您提供DNS名称,而不是单个IP​​,因此他们可以随意更改基础IP。因此,如果发生这种情况,您将得到指向错误IP的DNS记录。

另一件事是弹性负载均衡器使用多个IP作为相同的DNS名称,以便将流量引导到不同可用区域中的实例(您可以通过解析部署在多个AZ中的弹性负载均衡器的DNS名称来检查这一点) 。因此,通过为DNS A记录选择一个IP,您将限制该负载均衡器的潜在功能,因为它只会将流量定向到单个可用区域。

要解决这些问题,您必须使用指向完整负载均衡器DNS名称的DNS CNAME记录。或者,如果要将根域指向负载均衡器,则可能必须使用AWS托管DNS服务Route53。