SSL域与ec2 DNS名称不匹配

时间:2016-04-12 04:25:55

标签: node.js ssl amazon-ec2 dns

我的网站由Firebase托管托管,我想向在AWS EC2实例上运行的NodeJS进程发布http帖子。

首先失败:EC2是http,我有混合内容错误(https和http)。

接下来,我在EC2实例的前面放入了一个负载均衡器,并安装了我的域名证书(www.mydomain.com) 第二次失败:我收到ERR_INSECURE_RESPONSE错误,因为loadbalancer.amazonaws.com与www.mydomain.com不匹配

我最终解决了我认为简单易用的问题。请帮忙。

2 个答案:

答案 0 :(得分:1)

两个选项。

您需要在亚马逊注册您的域名,以便在AWS Route53中创建托管区域。在那里,你可以创建一个记录来指向" mydomain.com"到您的负载均衡器。

另一个选项是使用您当前的注册表(GoDaddy或其他人),将您的域转发到您的负载均衡器。您可能需要启用"使用屏蔽转发"因此它仍然看起来像您的域,但由AWS负载均衡器提供服务。

让我知道什么有用(或者没有),我会更新这个答案。

答案 1 :(得分:1)

您收到ERR_INSECURE_RESPONSE错误,因为您正在使用正在解析为loadbalancer.amazonaws.com的CNAME。由于您的证书适用于www.yourdomain.com,因此它会提供有效的错误。 CNAME和Alias的运作方式略有不同。使用CNAME时,流量不是您网域的有效别名,因此,如果您尝试保护该网址,则会收到错误消息。但是,当您为www和别名创建A记录时,对于loadbalancer.amazonaws.com,来自www.balancew.com上的loadbalancer.amazonaws.com的任何流量都是您域名的有效流量,您将不再有这些错误。< / p>

要在loadbalancer.amazonaws.com上终止www.yourdomain.com的安全流量,您需要拥有一个将在那里添加别名的A记录。不幸的是,ELB只提供DNS条目,没有IP地址,但许多DNS提供商(即GoDaddy)不允许您拥有DNS地址别名的DNS A记录;它们要求您为IP地址添加别名。这让生活变得更复杂。

有几种方法可以实现此目的(SSL不支持URL转发和屏蔽),但最简单的解决方案是使用Route 53.使用Route 53并不要求您注册或转移您的姓名AWS和托管区域每个域只需0.50美元/月。

要使用Route 53,请按照以下步骤操作:

  1. 为yourdomain.com创建托管区域。在Route 53中创建托管区域时,它将完成一些默认记录(如A,NS和SOA记录)。请注意NS记录,因为您以后需要它们。
  2. 接下来将您现有的区域文件条目(如MX记录)从当前的DNS提供商复制到新的托管区域。
  3. 当您想要将流量引导至ELB的记录时,您将输入名称,例如www,然后在类型选项字段下方,您会看到一个无线电选项&#34;别名:是否&#34;。当您选择是时,值字段将消失,您将看到一个选项,其中显示&#34;别名目标:输入目标名称&#34;。点击该字段后,您会收到帐户中可以添加别名的资源下拉列表。只需选择您的负载均衡器。
  4. 点击“创建”,然后使用“Route 53”完成。
  5. 现在您的所有dns记录都已复制,然后您将转到您的注册商并将名称服务器更改为Route 53为您提供的名称服务器。
  6. 现在,Route 53正在为您处理DNS。 loadbalancer.amazonaws.com是www.mydomain.com的有效别名。由于loadbalancer.amazonaws.com现在是www.yourdomain.com的有效别名,当您访问www.yourdomain.com时,您的ELB at loadbalancer.amazonaws.com将终止流量www.yourdomain.com并且您的错误将得到解决。

    附注:如果您的实例位于us-east-1,您可以使用证书管理器为您的ELB和域获取无限数量的免费标准,SAN和通配符SSL证书。