利用Cloudflare为基于GitHub Pages的Hexo博客添加HTTPS支持

本文详细介绍如何使用Cloudflare为基于GitHub Pages的Hexo博客配置HTTPS,包括注册Cloudflare、添加站点、修改DNS、开启HTTPS及重定向强制HTTPS的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2022-01-25 更新:博客新地址:https://www.itbob.cn/,文章距上次编辑时间较远,部分内容可能已经过时!



HTTP(超文本传输协议),是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。

HTTPS(超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。


● 前言

GitHub Pages 自带的域名(xxx.github.io)支持开启 https 服务,可以在仓库的【Settings】- 【GitHub Pages】下勾选【Enforce HTTPS】即可,但是如果你设置了自定义域名的话,就比较复杂了,因为 hexo 博客是托管在 GitHub 上的,没有自己的服务器,因此也不支持上传 SSL 证书,从2018年5月1日起,GitHub官方也支持自定义域名开启https了,实现方法可参考我的文章:《利用官方支持为基于GitHub Pages的Hexo博客启用HTTPS》,另外一种方法就是利用 Cloudflare 的 CDN 中转来启用 HTTPS,这种方法的弊端就是国内访问速度可能会变慢,本文主要讲述这种方法

Cloudflare 是一家美国的跨国科技企业,以向客户提供网站安全管理、性能优化及相关的技术支持为主要业务,它提供了免费的 https 服务,注意不是应用SSL证书,实现原理:用户到CDN服务器的连接为 https 方式,而CDN服务器到 GithubPages 服务器的连接为 http 方式,在CDN服务器那里加上反向代理

● 注册 Cloudflare

Cloudflare官网 注册账号
01.png

● 添加站点

添加你的站点,一直下一步即可
02.png
03.png
如果你已经在域名服务商那里解析过域名的话,之后就会出现你域名的解析列表,如果还没有解析过,可以参考《为hexo博客配置个性域名》
04.png

● 修改DNS

点击下一步 Cloudflare 会提供给你两个 DNS 地址
05.png
到域名服务商那里修改DNS,以阿里云为例,依次选择【控制台】-【域名】,选择你的域名,点击【管理】-【修改DNS】,将上面 Cloudflare 提供的两个 DNS 地址填进去,会过几分钟才生效
08.png
09.png
10.png

● 开启 HTTPS

在 Cloudflare 管理页面,点击【Crypto】选项,选择 SSL 的模式为【full】,注意:在CloudFlare 上激活站点后,可能需要24小时才能颁发新证书,耐心等待即可
07.png
关于三种模式 Flexible、Full、Full (Strict) 的区别:

  • Flexible:访客与 Cloudflare 之间是加密的,Cloudflare 到站点服务器是不加密的

  • Full:访客到 Cloudflare、Cloudflare 到站点服务器都是加密的,它不会验证你服务器上的证书是否合法,因此你可以在你服务器上安装任何证书,包括自签名证书

  • Full (strict):访客到 Cloudflare、Cloudflare 到站点服务器都是加密的,它会验证你服务器上的证书是否合法,你必须在你的服务器上安装有可信赖的CA证书,并且这个证书必须是未过期,包含有域名等信息的

至此,我们的域名就支持 https 访问了,但是当用户输入 http://xxxxxx 访问时,浏览器依旧会以 http 协议来访问,并不会跳转到 https,这时候就需要利用重定向来解决了

● 重定向强制 HTTPS

Cloudflare 提供了一个名叫 Page Rules 的页面规则的功能,我们可以利用此功能对 URL 做一些处理,当用户访问是 HTTP 的时候重定向到 HTTPS,点击【Page Rules】选项,点击【Create Page Rules】,新建如下规则并保存即可
06.png

现在我们的 Hexo 博客就实现了全站 HTTPS!

### 配置自定义DDNS使用Cloudflare 对于希望利用动态域名服务(Dynamic DNS, DDNS)并选择Cloudflare作为DNS供应商的情况,可以按照如下方法设置: #### 准备工作 确保已注册Cloudflare账号,并完成至少一个域名的添加。获取API Token,此Token需具备对目标域执行DNS记录编辑权限[^1]。 #### 创建脚本实现自动更新IP地址 编写Shell脚本来定期向Cloudflare API发送请求以同步当前公网IP至指定子域名下A记录。下面给出一段简单的Python代码用于演示目的: ```python import requests from os import environ as env CF_API_TOKEN = 'your_api_token' # 替换成自己的token ZONE_ID = 'zone_id_of_your_domain' RECORD_NAME = 'sub.yourdomain.com' def get_public_ip(): response = requests.get('https://api.ipify.org') return response.text.strip() def update_dns_record(ip_address): url = f"https://api.cloudflare.com/client/v4/zones/{ZONE_ID}/dns_records" headers = { "Authorization": f"Bearer {CF_API_TOKEN}", "Content-Type": "application/json", } data = {"type":"A","name": RECORD_NAME,"content": ip_address} resp = requests.put(url,json=data,headers=headers) print(resp.json()) if __name__ == '__main__': public_ip = get_public_ip() update_dns_record(public_ip) ``` 这段程序首先通过第三方服务查询最新的公共IPv4地址;接着调用Cloudflare官方提供的RESTful接口来创建或修改现有的A类型解析条目指向新的IP位置[^2]。 为了使上述过程自动化,可考虑借助cron定时任务或其他调度工具安排该脚本周期性运行。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WuKongSecurity@BOB

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值