目前绝大多数网站都已经实现了HTTPS,不过云上HTTPS的SSL证书在哪配、怎么配是一个值得讨论的问题,在大型企业复杂的部署架构下,一个Web应用访问路径可能经过CDN->WAF->SLB->NGINX等多层,下面就带大家了解云上服务如何启用HTTPS。
什么是HTTPS
HTTP协议以明文方式发送内容,不提供任何方式的数据加密。HTTPS协议是以安全为目标的HTTP通道,简单来说,HTTPS是HTTP的安全版,即将HTTP用SSL/TLS协议进行封装,HTTPS的安全基础是SSL/TLS协议。HTTPS提供了加密通讯方法,被广泛用于万维网上安全敏感的通讯,例如交易支付。
目前绝大多数网站都已经实现了HTTPS,不过云上HTTPS的SSL证书在哪配、怎么配是一个值得讨论的问题,在大型企业复杂的部署架构下,一个Web应用访问路径可能经过CDN->WAF->SLB->NGINX等多层,下面就带大家了解云上服务如何启用HTTPS。
证书申请
为了进行以下实践,请提前准备好一个测试域名以及证书。本文以阿里云申请免费证书为例,文档可以参考https://help.aliyun.com/document_detail/156645.html
在完成申请后,请在控制台把证书下载到本地备用
方案选择
做好上述准备后,我们来看下Web应用部署在云上有哪些方案可供大家组合,可能用到的组件有CDN(DCDN),WAF,CLB(ALB),ECS(ACK 含ingress)等,下面我们就几种常见的组合为大家做分享
ECS+EIP
方案说明:这是最简单的Web部署方案,适用于个人建站或者测试练习使用,不具备高可用机制。
准备工作:申请ECS主机,并绑定公网IP,将DNS域名解析配置到该公网IP
操作部署:以nginx为例请参考操作文档https://help.aliyun.com/document_detail/98728.html?spm=5176.b657008.help.dexternal.7d93799d5vOMmc
部署到其他Web服务器请参考上述链接中左侧列出的其他参考文档
SLB(ALB)+ECS
方案说明:通过SLB进行负载均衡,适用于中小企业部署应用,实现基本的安全防护和高可用机制。在选型中我们需要考虑使用SLB(又名CLB,传统型负载均衡)或ALB(应用型负载均衡),两者均支持应用层HTTPS的负载均衡能力,更具体的差异可参考https://help.aliyun.com/document_detail/196874.html
准备工作:申请ECS主机,并在主机上启用Web服务,将DNS域名解析指向SLB的公网IP
操作部署:CLB操作说明请参考文档https://help.aliyun.com/document_detail/85953.html
ALB的操作说明请参考文档https://help.aliyun.com/document_detail/198571.html
WAF+SLB+ECS
方案说明:Web应用防火墙(Web Application Firewall,简称WAF)为您的网站或App业务提供一站式安全防护。WAF可以有效识别Web业务流量的恶意特征,在对流量清洗和过滤后,将正常、安全的流量返回给服务器,避免网站服务器被恶意入侵导致性能异常等问题,从而保障网站的业务安全和数据安全。
在SLB前端增加WAF,可以进一步提升Web应用的安全能力,相应的也需要在WAF侧配置证书
操作说明:参考文档https://help.aliyun.com/document_detail/97063.html
CDN+WAF+SLB+ECS
方案说明:为了提升客户端的响应速度,通常会选择增加内容缓存在前端,阿里云目前提供的CDN和全站加速(DCDN)产品均支持HTTPS,两者具体的差异可参考https://help.aliyun.com/document_detail/64836.html
操作说明:CDN的证书配置参考文档https://help.aliyun.com/document_detail/27118.html
DCDN的证书配置参考文档https://help.aliyun.com/document_detail/65101.html
SCDN的证书配置参考文档https://help.aliyun.com/document_detail/63736.html
SSL证书卸载
由于SSL证书卸载需要消耗服务器性能,一般来说在可信内网环境中的通讯是无需使用HTTPS加密传输的,从公网访问的流量经由中间产品后,可以将流量从HTTPS转为HTTP继续向后端转发。
上述的产品中关于SSL证书卸载的能力替大家总结如下
CDN
方案说明:通过配置回源端口为80或其他非443端口,可以实现CDN侧将HTTPS流量转为HTTP流量向源站回源,但是该方案存在一定风险。因为源站一般为WAF/SLB等仍旧暴露在公网的地址,从CDN侧L2回源流量仍旧暴露在公网,一般建议仍旧以HTTPS协议回源提升安全性。
操作参考:CDN配置回源协议 https://help.aliyun.com/document_detail/34949.html
DCDN配置回源协议https://help.aliyun.com/document_detail/65089.html
WAF
方案说明:在WAF侧配置过程中,“协议类型”处可以选择回源协议,由于源站一般为SLB等仍旧暴露在公网的地址,从WAF回源流量仍旧暴露在公网,一般建议仍旧以HTTPS协议回源提升安全性。
操作参考:https://help.aliyun.com/document_detail/97063.html
ALB
方案说明:在“服务器组”处配置后端协议,可以选择HTTP等
操作参考:管理服务器组->选择后端协议https://help.aliyun.com/document_detail/198768.html
配置全链路HTTPS访问实现加密通信https://help.aliyun.com/document_detail/215921.html
CLB
方案说明:使用CLB产品的HTTPS负载均衡,其后端只能支持HTTP协议转发。如果想要实现HTTPS的转发,请采用4层TCP的负载均衡实现透明转发。
操作参考:使用CLB部署HTTPS业务(单向认证)https://help.aliyun.com/document_detail/85953.html
强制跳转(重定向)和协议跟随
由于仍有存量应用或者客户会直接访问HTTP的地址,通过重定向的方式将HTTP流量引导至HTTPS至关重要,各个产品也都不同程度的支持重定向功能,注意该功能建议仅在某一处开启,避免出现重定向过多等问题
CDN侧配置强制跳转:https://help.aliyun.com/document_detail/27133.html
WAF开启强制跳转:https://help.aliyun.com/document_detail/97063.html
:
ALB使用ALB将HTTP访问重定向至HTTPS:https://help.aliyun.com/document_detail/215920.html
CLB将HTTP访问重定向至HTTPS:https://help.aliyun.com/document_detail/89151.html
另外,由于某些情况,可能仍旧需要在同一个域名下支持HTTP和HTTPS访问,针对这种情况给出以下配置建议:
在CDN侧配置协议跟随https://help.aliyun.com/document_detail/34949.html
确保回源端口写的80或其他非443端口
后续链路均保持HTTPS回源,如WAF侧回源协议为HTTPS,ALB回源协议为HTTPS,CLB使用4层负载均衡(因为HTTPS负载只能HTTP回源)
不要开启其他环节的强制跳转(重定向)功能
(具体实践中可能遇到其他问题,仅供参考)
排查思路建议
在上述多种多样的组合中,可能产生诸多问题,此处给出大家一个排查问题的建议和命令
在排查问题过程中,可以将中间环节进行旁路,例如CDN->WAF->SLB->ECS的链路,在问题不清楚在哪里的时候,可以直接请求ECS检查是否有问题,再尝试直接请求SLB是否有问题。也可以重新组合,例如配置WAF->ECS,旁路掉SLB。
为了方便测试,可以通过写本地hosts文件的方式实现IP和域名的绑定,或者通过curl命令 --resolve参数来指定解析。
后续运维管理
从上文可以看出,证书的部署是一件较为繁杂的事情,
如果仅为实现最低限度的HTTPS访问,在最前端的访问界面装载证书,后续流量均改为HTTP会简化部署。
如果为实现更高的安全性,则建议在全部的访问链路上均使用HTTPS协议,这样的话需要涉及证书到期后的部署更新。
可以通过阿里云数字证书管理服务的自动部署服务来简化更新操作,可以实现证书自动续期、自动部署,参考文档到期自动部署部分,https://help.aliyun.com/document_detail/98575.html?spm=5176.b657008.help.dexternal.7d93799deKCpEA
总结
通过学习本文,相信大家已经对如何在云上进行HTTPS配置有了基本的了解,也可以看出不同产品间具有繁杂的组合。我们不能穷举所有的组合方式,具体在云上如何部署您的Web应用并实现安全防护,还是要基于实际的业务场景并考虑性能与成本等多种因素,也欢迎大家积极在社区分享更多配置上的最佳实践。