我有一个Angular - Spring Boot App。在后端(Spring Boot App)能够在AWS负载均衡器上使用AWS canned SSL cert("example.com"),该均衡器在443端口上侦听传入的https流量。另一方面,在前端(Angular应用程序),我有一个使用相同SSL证书(“example.com”)的S3站点。
当我转到https://example.com时,我的站点加载正常,并且在url旁边显示了https安全绿色标签(前端使用也使用了SSL证书(“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证书。
发布于 2020-08-06 20:48:58
我已经在别处发布了这个答案,但我也想在这里发布它
我现在已经花了大约一周的时间尝试自己解决这些问题-我使用的是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,并通过HTTP在80上路由到实例。
亚马逊试图告诉我这一点,但因为我是一个新手,而且他们的教程是我整个职业生涯中读过的最糟糕的教程,他们实际上不会将你的任何安全端口暴露在互联网上。这实际上很好,因为你的流量一直到负载均衡器都是加密的,然后,即使它不再是HTTPS,它也已经在亚马逊的服务器上了,所以它的安全性丝毫不会降低。
希望这里有什么能帮上忙!
https://stackoverflow.com/questions/54954917
复制相似问题