Angular AWS APP中的ERR_CERT_COMMON_NAME_INVALID

时间:2019-03-02 03:22:23

标签: amazon-web-services rest api ssl web-applications

我有一个Angular-Spring Boot应用程序。在后端(Spring Boot App)中,可以在AWS负载均衡器上使用AWS罐装SSL证书(“ example.com”),该负载监听443端口上的传入https通信。另一方面,在前端(Angular应用程序)中,我有一个S3站点,该站点使用相同的SSL cert(“ example.com”)。

当我转到https://example.com时,我的网站加载正常,并通过url显示https安全绿色标记(前端使用也使用SSL cert(“ example.com”))。

但是,当我的前端转到负载均衡器的地址时,它看起来像:

https://load-balancer-xxxxxx.us-east-1.elb.amazonaws.com

换句话说,当我的前端向后端请愿时,出现以下错误:

net::ERR_CERT_COMMON_NAME_INVALID

然后是错误的原因是我的网站的经过认证的URL不包含域* .amazonaws.com(如果是原因)。如何防止浏览器显示ERR_CERT_COMMON_NAME_INVALID?如果有必要,前端将向https://examplehttps://load-balancer-xxxxxx.us-east-1.elb.amazonaws.com

发出请求

这是我的DNS配置:

enter image description here

注意:我已经安装了单域SSL证书。

非常感谢!

1 个答案:

答案 0 :(得分:0)

我已经将此答案发布到其他地方,但我也想在这里发布

我花了大约一周的时间自己尝试解决这些问题-我使用的是React而不是Angular,但是步骤应该相同。

这是我解决的方法,其中某些方法也可能对您有用。最终主要是配置问题。

这里的关键之一是您已经需要一个域,并且您必须能够修改域的DNS。大多数主机将允许您执行此操作。所以我拥有www.example.com,我需要做的是创建一个CNAME DNS记录以将ops.example.come路由到my-site.my-aws-region-1.elasticbeanstalk.com

然后,当我在AWS Cert Manager中创建SSL证书时,我给它起的名称是ops.example.com,但从理论上讲*.example.com也可以使用。

然后,最终成为整个问题的关键是,为了使HTTPS正常工作,您的负载均衡器必须在443上侦听HTTPS并在80上通过HTTP路由到实例。

Amazon试图告诉我这一点,但是由于我是菜鸟,而且因为他们的教程是我一生中读过的最糟糕的教程,所以实际上它们并未将您的任何安全端口暴露给互联网。实际上这很好,因为您的流量一直一直加密到负载均衡器,然后再加密,即使它不再是HTTPS了,无论如何它已经在亚马逊的服务器上了,因此它的安全性也没有降低。

希望这里有所帮助!