我有一个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://example到https://load-balancer-xxxxxx.us-east-1.elb.amazonaws.com
发出请求这是我的DNS配置:
注意:我已经安装了单域SSL证书。
非常感谢!
答案 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了,无论如何它已经在亚马逊的服务器上了,因此它的安全性也没有降低。
希望这里有所帮助!