使用 Let‘s Encrypt (DNS-01) 为 Cloudflare 托管域名申请 SSL 证书

本指南详细介绍了如何使用 Let’s Encrypt 通过 DNS-01 方式Cloudflare 托管的域名 申请 SSL 证书,并配置 自动续期。此外,还包括如何删除并注销 SSL 证书的完整步骤。


1. 安装 Certbot 和 Cloudflare 插件

确保 Ubuntu 服务器已更新:

sudo apt update
sudo apt upgrade -y

安装 Certbot 和 Cloudflare DNS 插件:

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

验证 Certbot 是否安装成功:

certbot --version

2. 创建 Cloudflare API 令牌

为了使用 DNS-01 验证,你需要在 Cloudflare 生成 API 令牌。

创建 API 令牌

  1. 访问 Cloudflare API Token 页面
  2. 点击 Create Token(创建令牌)
  3. 选择 Edit zone DNS 作为模板
  4. Permissions(权限)部分:
    • ZoneDNSEdit
  5. Zone Resources(区域资源)部分:
    • 选择 Specific Zone(特定区域),然后选择你的域名(如 xxx.com
  6. 创建并复制 API 令牌

3. 配置 Cloudflare API 令牌

在服务器上创建存放 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

4. 申请 SSL 证书

运行以下命令申请 SSL 证书:

sudo certbot certonly --dns-cloudflare \
  --dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \
  -d <your-domain>

成功申请后的证书路径

  • 证书文件:/etc/letsencrypt/live/<your-domain>/fullchain.pem
  • 私钥文件:/etc/letsencrypt/live/<your-domain>/privkey.pem

你可以使用以下命令查看证书:

sudo certbot certificates

5. 自动续期

测试自动续期

sudo certbot renew --dry-run

如果没有错误,则表示自动续期正常工作。

创建自动续期任务

sudo crontab -e

添加以下内容:

0 3 * * * certbot renew --quiet --dns-cloudflare --dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini && systemctl reload nginx

这样,系统会在每天凌晨 3:00 自动检查并续期 SSL 证书。


6. 配置 Nginx(可选)

编辑 Nginx 配置文件:

sudo nano /etc/nginx/sites-available/<your-domain>

示例配置:

server {
    listen 443 ssl;
    server_name <your-domain>;

    ssl_certificate /etc/letsencrypt/live/<your-domain>/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/<your-domain>/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:9000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

server {
    listen 80;
    server_name <your-domain>;
    return 301 https://$host$request_uri;
}

重启 Nginx 以应用更改:

sudo systemctl restart nginx

删除并注销 SSL 证书

1. 删除本地证书文件

sudo certbot delete --cert-name <your-domain>

2. 注销 Let’s Encrypt 账户(可选)

如果你不再使用 Let’s Encrypt,可以注销账户:

sudo certbot unregister

3. 移除 Cloudflare API 令牌(可选)

rm -f ~/.secrets/certbot/cloudflare.ini

4. 删除自动续期任务

打开 crontab,删除 certbot renew 相关的行:

sudo crontab -e

5. 重启 Web 服务器(如 Nginx)

sudo systemctl restart nginx

6. 验证是否成功删除

运行以下命令检查是否仍有证书:

sudo certbot certificates

如果 <your-domain> 不在列表中,则表示证书已成功删除。


总结

  • 成功申请 SSL 证书
  • 配置自动续期
  • Nginx 配置 HTTPS 反向代理(可选)
  • 安全删除 SSL 证书

你现在可以放心地在 <your-domain> 使用 HTTPS!🚀

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值