如何使用cloudflare申请ssl证书

2024 年 9 月 26 日 星期四(已编辑)
151
1
AI 生成的摘要

如何使用cloudflare申请ssl证书

一年前申请的华为云服务器已经是过期了,新的服务器需要全新的ssl证书,因为国内的网络环境问题,使用Certbot申请Let's Encrypt证书比较折磨,开放博客的最初一段时间只能依靠cloudflare的免费cdn来装作有证书加密的样子…… 现在,好时代来临力!只要把域名托管到cloudflare就可以用一种更加可靠的方法申请证书了。

本文方法需要命令行权限以及cloudflare的api令牌

Step 1

把域名托管到cloudflare。过程略,可以上网搜教程。这就是重其所重,轻其所轻。

Step 2

首先我们需要用ssh连接到服务器。然后安装Certbot,这是一个免费的开源工具,可以帮助我们自动化获取和安装SSL证书。

sudo apt-get update
sudo apt-get install certbot

然后安装Cloudflare插件进行自动化DNS验证。

sudo apt-get install python3-certbot-dns-cloudflare

Step 3

然后我们需要在cloudflare里申请一个API令牌,为之后的DNS验证做准备,权限至少需要开DNS防火墙读取与编辑、DNS读取与编辑。(注意一定要保存好令牌

图片

Step 4

创建一个ini文件把API令牌保存到服务器上,我比较喜欢用nano。

sudo mkdir ~/.secrets
sudo mkdir ~/.secrets/certbot
sudo nano ~/.secrets/certbot/cloudflare.ini

nano输入内容如下,your-cloudflare-api-token要换成自己的API令牌。

dns_cloudflare_api_token = your-cloudflare-api-token

然后我们要确保凭据文件的权限是安全的。

sudo chmod 600 ~/.secrets/certbot/cloudflare.ini

Step 5

运行Certbot命令,进行自动化的证书申请。

sudo certbot certonly \
  --dns-cloudflare \
  --dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \
  -d example.com \
  -d www.example.com

需要把example.comwww.example.com替换为要申请的域名,但是这个命令常常不成功。由于DNS记录传播延迟,Let's Encrypt未能找到所需的DNS TXT记录,这个命令就会报错。我们可以增加DNS记录传播时间,以确保TXT记录有足够的时间传播到所有DNS服务器。一般来说,60s就足够了。

sudo certbot certonly \
  --dns-cloudflare \
  --dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \
  --dns-cloudflare-propagation-seconds 60 \
  -d example.com \
  -d www.example.com

这样的话,证书申请就大功告成了,每次证书到期后也会自动续期(当然是在API令牌过期之前),可谓省心省力。API令牌过期的话只需要修改cloudflare.ini文件,然后重新运行这个命令就好。


2025/4/28

如果说证书更新后依然显示过期,可以手动重新加载 Web 服务器配置

sudo systemctl reload nginx
sudo systemctl reload apache2

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...