我在AWS上使用Apache在AWS负载均衡器后面的2个EC2实例上设置了一个网站。负载均衡器有一个ssl证书(成功流动this manual)Godaddy有一个指向负载均衡器IP的网站的A记录(不能使用DNS名称)
在我安装了本地ssl证书的单个实例之前,它运行良好。
我的问题是: 1.当我使用http://进入我的新网站时,它显示正确,但在地址栏中我没有看到任何ssl证书。 (我是否还需要使用本地.htaccess进行ssl重定向?如果是,我是否需要使用我生成负载均衡器ssl的密钥?)
负载均衡器侦听器配置为: HTTP 80> HTTP 80 HTTPS 443> HTTP 80(带我的证书)
感谢您的帮助, 亚历克斯。
答案 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。