不得不说,cloudflare是我见过最强大、最安全的CDN。虽然在国内访问速度并不是特别理想,但其强大的防御能力、免费的计划还是很值得一用的。
cloudflare仪表板中,SSL/TLS下的“源服务器”页面中,有一个名为“经过身份验证的源服务器拉取”的配置项(又名Authenticated Origin Pulls)。本文就讲一讲这个配置项的作用以及具体的配置方法。
介绍
Authenticated Origin Pulls是基于双向SSL认证(mTLS)实现的,在该配置项中,其作用是为了让源服务器验证请求是否来自于cloudflare网络。
众所周知,如果我们想要借助cloudflare的WAF来保护我们的网站,那么就要确保访问网站的流量必须经过cloudflare网络进行安全检查,而不是绕过它直接到达源服务器。因此,在源服务器上阻断非来自cloudflare网络的流量就显得至关重要。
在我们常见的一些其他品牌的CDN服务商中,他们通常都会向客户提供一个CDN回源IP列表,客户可以通过仅允许这些IP访问来达到阻断外部流量的目的。cloudflare也提供了这样的一个列表:
然而实际情况是,CDN服务商会经常更新节点服务器,回源IP也会随之变动,如果源服务器防火墙策略更新不及时很容易造成业务中断;另外访问IP也可以通过一些技术手段进行伪造,阻拦起来也会比较麻烦。
而cloudflare的Authenticated Origin Pulls就很好的解决了这个问题。原理简单来说就是源站持有一份公钥证书,CDN节点持有一份私钥证书;回源请求时CDN节点将数据用私钥加密,源站收到请求后用公钥解密数据。如果私钥文件没有泄露,就可以实现源服务器验证请求是否来源于真正的CDN节点。
对于免费计划的用户来说,我们只能使用cloudflare提供的公共证书,不能自定义证书,这其实对安全性并没有什么大的影响。
配置
首先必须确保SSL/TLS加密模式为完全或者完全(严格)
在cloudflare的文档中心下载公共的公钥证书:
然后将证书上传到服务器上。
以Nginx服务器软件为例,打开站点的配置文件添加如下代码:
ssl_client_certificate /etc/nginx/certs/cloudflare.crt;
ssl_verify_client on;
重启Nginx,并打开“经过身份验证的源服务器拉取”配置项的开关。
为了验证配置是否生效,可以通过本地电脑修改hosts文件或者关闭“经过身份验证的源服务器拉取”配置项的开关,然后访问站点查看返回结果。如果出现如下图这种类似的错误信息,说明源服务器已经配置成功。
然后打开“经过身份验证的源服务器拉取”配置项的开关,并使自己的流量经过cloudflare网络,如果网页能够正常显示,则说明cloudflare也已经配置正常。
4 条评论
你好,我看博主用的是京东和cf的合作套餐,请问一年需要投入多少?
Cloudflare只有Enterprise计划可以使用中国网络,Enterprise计划是最高级别的计划,不可以自助购买,需要联系商务为你定制,必须是企业主体。根据使用规模不同价格也不一样,起步价应该是3000美金/月。
启用中国网络的步骤比较繁琐,大约需要等待一个星期,启用后还是在Cloudflare仪表板中设置,和以前没什么区别,不需要单独设置国内地区的策略。唯一不同的是Enterprise计划提供的功能会丰富一些,使用体验也很棒。
个人的话不太建议这么用,成本过高了。如果你感兴趣,我会尽量写一篇博文,免费实现境外Cloudflare境内自选CDN,效果也是相当不错的。
温馨提示:添加到Nginx配置文件的第一行代码记得根据公钥证书文件实际上传位置自行更改,不要直接复制粘贴,否则会导致Nginx异常。
这种方案比较适合于全局使用cloudflare的情况,如果在不同地区使用了不同的cdn,那还得使用自定义证书