AngularJS网站配置HTTPS后,API服务器是否需配置HTTPS及证书?
先给你明确的结论:
- 当你的网站通过HTTPS对外提供服务时,必须把API服务器也配置为HTTPS,否则浏览器会直接阻止页面发起的API请求。
- 是否需要另行申请SSL证书,取决于你的API服务器使用的域名情况:
为什么API服务器必须用HTTPS?
现代浏览器有严格的「混合内容」安全策略:如果用户访问的是HTTPS加密的页面,页面中所有发起的外部请求(包括API调用)也必须是HTTPS协议。如果API用HTTP,浏览器会直接拦截这些请求——要么在控制台抛出安全警告,要么直接让请求失败,用户根本没法正常使用网站功能。
关于SSL证书的复用与新申请
可以复用现有证书的情况
如果你的API服务器和网站使用同一个域名(比如网站是https://yourdomain.com,API路径是https://yourdomain.com/api),或者API使用的是现有证书覆盖的子域名(比如证书是通配符*.yourdomain.com,API是https://api.yourdomain.com),那你完全不需要另行申请证书。只要把API的流量通过现有的负载均衡器转发,或者在API服务器的部署环节(比如单独的负载均衡器或服务器本身)配置这个已有的证书就行。需要新申请证书的情况
如果你的API服务器使用的是和网站完全独立的域名(比如https://api-anotherdomain.com),那你必须为这个独立域名申请新的SSL证书。不管是在AWS Certificate Manager还是其他权威证书颁发机构,都要确保API域名有对应的有效证书,才能建立合法的HTTPS连接。
额外小提示
如果你的API服务器和网站都在AWS内部的同一个VPC里,会不会有例外?其实哪怕是内部通信,只要前端是从HTTPS页面发起的API请求,浏览器依然会检查API的协议安全性,所以还是得用HTTPS。当然你也可以让网站后端作为代理,把前端的请求转发给内部的HTTP API,但这种方案只是隐藏了前端到API的HTTP请求,本质上还是推荐端到端的HTTPS加密,安全性更高。
内容的提问来源于stack exchange,提问作者JasminDan

