利用CloudFlare实现网站https访问

配置DNS指向CloudFlare

首先登入CloudFlare的时候,会被要求更改网站的DNS为cloudflare中。需要登入到自己网站的域名配置中修改DNS到CloudFlare下。

配置成功后,收到CloudFlare的确认邮件,打开DNS,将Proxy status都打开。

配置https-only

打开CloudFlare的TLS选项,选择encryption mode为flexible,就是服务器到cloudflare不加密(只要cloudflare不作恶,我就OK),在Edge Certificates里面选择Always use https即可。

配置防火墙只允许cloudflare的IP

这里没配置成功,留个坑以后补全。

安装firewalld

sudo apt install firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld

接下来执行以下脚本为cloudflare增加至白名单

!#/bin/bash

for i in $(curl "https://www.cloudflare.com/ips-v4");
do
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="'$i'" port port=80 protocol=tcp accept';
sudo firewall-cmd --permanent --zone=public --add-source=$i;
done

for i in $(curl "https://www.cloudflare.com/ips-v6");
do
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv6" source address="'$i'" port port=80 protocol=tcp accept';
sudo firewall-cmd --permanent --zone=public --add-source=$i;
done

sudo firewall-cmd --permanent --change-zone=eth0 --zone=public

sudo firewall-cmd --reload

firewall-cmd --zone=public --list-all