跳转到内容
新建笔记

使用 Let's Encrypt 和 Certbot 为 Cloudflare 托管的域名申请 SSL 证书

1. 确保域名解析在 Cloudflare

跳转到“1. 确保域名解析在 Cloudflare”

确保你的域名 jessi53.com 和 www.jessi53.com 的 DNS 记录已经正确配置在 Cloudflare 中,并且状态为 Active。

在你的服务器上安装 Certbot 和 Cloudflare 插件。以下是基于 Debian/Ubuntu 和 CentOS 的安装步骤:

基于 Debian/Ubuntu 的系统

跳转到“基于 Debian/Ubuntu 的系统”
终端窗口
sudo apt update
sudo apt install -y certbot python3-certbot-dns-cloudflare
终端窗口
sudo yum install -y epel-release
sudo yum install -y certbot python3-certbot-dns-cloudflare

二、创建 Cloudflare API 令牌

跳转到“二、创建 Cloudflare API 令牌”

1. 登录 Cloudflare 控制面板

跳转到“1. 登录 Cloudflare 控制面板”

打开 Cloudflare 控制面板 并登录你的账户。

  1. 在左侧菜单中,选择 API Tokens。
  2. 点击 Create Token 按钮。
  3. 在 Choose a template 下拉菜单中,选择 Edit zone DNS 模板。
  4. Token Name:输入一个描述性的名称,例如 Certbot DNS Management。
  5. Permissions:确保 Edit zone DNS 权限已启用。
  6. Zone Resources:选择 所有区域 或者指定特定的区域。
  7. 客户端 IP 地址筛选:输入你的服务器公网 IP 地址(例如 8.130.xx.xx)。
  8. 点击 Create Token 按钮生成 API 令牌,并复制保存生成的 API 令牌。

三、配置 Certbot 使用 Cloudflare API 令牌

跳转到“三、配置 Certbot 使用 Cloudflare API 令牌”

在服务器上创建一个文件来存储你的 Cloudflare API 令牌:

终端窗口
mkdir -p ~/.secrets/certbot
nano ~/.secrets/certbot/cloudflare.ini

在文件中添加以下内容(替换 YOUR_CLOUDFLARE_API_TOKEN):

dns_cloudflare_api_token = YOUR_CLOUDFLARE_API_TOKEN

设置文件权限以确保安全:

终端窗口
chmod 600 ~/.secrets/certbot/cloudflare.ini

使用 Certbot 和 Cloudflare 插件申请 SSL 证书:

终端窗口
sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini -d jessi53.com -d www.jessi53.com
# 可添加多个域名
sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini -d jessi53.com -d www.jessi53.com -d xxxx1031.com -d www.xxxx1031.com

注意: 申请时先把CDN代理打开

使用 Certbot 和 Cloudflare 插件申请泛域名 SSL 证书:

终端窗口
sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini -d jessi53.com -d www.jessi53.com -d *.jessi53.com

如果 DNS 验证失败,可以尝试增加 --dns-cloudflare-propagation-seconds 的值,以确保 DNS 记录有足够的时间传播:

终端窗口
sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini -d jessi53.com -d www.jessi53.com -d *.jessi53.com --dns-cloudflare-propagation-seconds 60

五、配置 Nginx 使用 SSL 证书

跳转到“五、配置 Nginx 使用 SSL 证书”

找到你的 Nginx 配置文件,通常位于 /etc/nginx/sites-available/ 或 /etc/nginx/conf.d/ 目录下。例如,你的配置文件可能是 /etc/nginx/sites-available/jessi53.com。

打开配置文件并更新为以下内容:

server {
listen 80;
server_name jessi53.com www.jessi53.com;
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
server_name jessi53.com www.jessi53.com;
ssl_certificate /etc/letsencrypt/live/jessi53.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/jessi53.com/privkey.pem;
location / {
# 你的网站内容
}
}

运行以下命令测试 Nginx 配置文件是否有语法错误:

终端窗口
sudo nginx -t

如果配置文件没有问题,重新加载 Nginx 以应用更改:

终端窗口
sudo systemctl reload nginx

运行以下命令编辑 Crontab 文件:

终端窗口
sudo crontab -e

确保 Crontab 文件中包含以下行,以每天凌晨 2 点自动尝试续期证书:

终端窗口
0 2 * * * /usr/bin/certbot renew --quiet

打开浏览器,访问 https://jessi53.com 和 https://www.jessi53.com,确保网站能够通过 HTTPS 正常访问,并且没有证书错误。

查看 Certbot 的日志文件以确保一切正常:

终端窗口
cat /var/log/letsencrypt/letsencrypt.log

来源:CSDN 原文,首次发布于 2025-05-31。