
好久没有更新博客了,因为之前阿里云备案手机号一直没更新所以备案被撤销了,站点也就随之迁移到了海外的服务器上,迁移后也一直没去管,最近刚好帮朋友在弄Cloudflare,所以顺手就把自己的博客也套了个Cloudflare的CDN,总体来说Cloudflare的配置还是非常简单的,今天就重点说说与SSL相关的配置。
很多人使用Cloudflare除去方便之外,其实也看中了Cloudflare的免费的SSL,虽然现在Let’s Encrtpt的项目使得SSL证书已经基本普及,不过使用起来还是有一定的门槛,当然如果你想要快速使用,可以参考我之前的一片文章 《Caddy,简单好用的Http服务器》 ,使用Caddy可以很方便的启动并自动维护你的Let’s Encrypt的证书。那么如果你想使用Cloudflare来加密HTTPS,有哪些需要注意的事项呢?
基础知识
加密浏览器到Cloudflare的CDN
加密Cloudflare CDN服务器到你网站服务器
1 |
listen 443 ssl http2; |
保存并重启你的Nginx服务器后,在SSL/TLS下选择Full(strict)模式,即可完成Cloudflare CDN服务器到你网站服务器之间的加密了。
使用Authenticated Origin Pulls
Authenticated Origin Pulls保证了客户端在获取你网站服务器的内容时,需要提交客户端证书验证,否则不允许访问,这个设置通常可以进一步防止你的服务器数据被非Cloudflare CDN服务器访问,当你的源站全站采用CDN后,可以打开这个选项进一步提升安全性,在打开之前,需要在Nginx上做如下配置:
1.下载Origin Pull证书:
https://support.cloudflare.com/hc/zh-cn/article_attachments/360044928032/origin-pull-ca.pem
,并保存为origin-pull-ca.crt
2.在Nginx的配置中,加入如下两行配置(假设你的证书都储存在/usr/local/nginx/conf/ssl/目录下)
1 |
ssl_client_certificate /usr/local/nginx/conf/ssl/origin-pull-ca.crt; |
3.重启Nginx,此时再访问你的网站,会出现400错误,那说明Nginx已经配置成功,这个时候去Cloudflare后台打开Authenticated Origin Pulls的开关,即可实现对源站内容的进一步保护
终极:屏蔽非Cloudflare CDN的访问
当然,终极策略,我们可以考虑在Nginx上,屏蔽一切非Cloudflare CDN服务器的访问,我们可以在 https://www.cloudflare.com/ips/ 看到所有Cloudflare使用的IP,我们可以在新建一个如下的cf.conf的配置,填写如下内容:
1 |
# https://www.cloudflare.com/ips |
然后,我们在Nginx的配置下,增加如下配置
1 |
include cf.conf; |
这样,所有非Nginx IP访问都会被拒绝,这样的话,整个源站的保护基本已经做到比较完善的程度了。