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

一、准备工作

1. 确保域名解析在 Cloudflare

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

2. 安装 Certbot

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

基于 Debian/Ubuntu 的系统
bash 复制代码
sudo apt update
sudo apt install -y certbot python3-certbot-dns-cloudflare
基于 CentOS 的系统
bash 复制代码
sudo yum install -y epel-release
sudo yum install -y certbot python3-certbot-dns-cloudflare

二、创建 Cloudflare API 令牌

1. 登录 Cloudflare 控制面板

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

2. 创建 API 令牌

  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 令牌

1. 创建配置文件

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

bash 复制代码
mkdir -p ~/.secrets/certbot
nano ~/.secrets/certbot/cloudflare.ini

2. 添加 API 令牌

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

ini 复制代码
dns_cloudflare_api_token = YOUR_CLOUDFLARE_API_TOKEN

3. 设置文件权限

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

bash 复制代码
chmod 600 ~/.secrets/certbot/cloudflare.ini

四、申请 SSL 证书

1. 申请单域名 SSL 证书

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

bash 复制代码
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代理打开

2. 申请泛域名 SSL 证书

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

bash 复制代码
sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini -d jessi53.com -d www.jessi53.com -d *.jessi53.com

3. 增加 DNS 传播时间

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

bash 复制代码
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 证书

1. 编辑 Nginx 配置文件

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

2. 更新配置文件

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

nginx 复制代码
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 / {
        # 你的网站内容
    }
}

3. 测试 Nginx 配置

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

bash 复制代码
sudo nginx -t

4. 重新加载 Nginx

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

bash 复制代码
sudo systemctl reload nginx

六、配置自动续期

1. 编辑 Crontab 文件

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

bash 复制代码
sudo crontab -e

2. 添加自动续期任务

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

bash 复制代码
0 2 * * * /usr/bin/certbot renew --quiet

七、验证 HTTPS 配置

1. 访问网站

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

2. 查看日志文件

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

bash 复制代码
cat /var/log/letsencrypt/letsencrypt.log
相关推荐
2301_7807896619 小时前
DDoS 攻击溯源:DNS 水印标记 + 区块链存证的双保险
运维·服务器·网络·云原生·ddos
全麦面包 time展天21 小时前
瀚海拾贝(一)HTTP协议/IIS 原理及ASP.NET运行机制浅析【图解】
网络协议·http·asp.net
微硬创新21 小时前
耐达讯自动化16路0-20mA转PROFINET协议转换模块技术说明
人工智能·网络协议·自动化·信息与通信
2601_949499941 天前
芯瑞科技 DT-1414 光模块工程实测:完美兼容博通(安华高) HFBR-1414PTZ,VCSEL 替代方案
大数据·网络·人工智能·科技·光模块
2501_915918411 天前
iOS 怎么抓包?抓包鹰系统级 网卡 应用层三种方式对比,不越狱抓 iPhone 流量
网络协议·计算机网络·网络安全·ios·adb·https·udp
云边云科技_云网融合1 天前
连锁门店 POS、监控、IoT 设备网络不稳定怎么解决?
网络·物联网
XR1234567881 天前
学校宿舍区网络方案对比:多终端高并发下的认证、管理与体验
网络
March.s1 天前
IP 存储核心 iSCSI:原理拆解 + 无报错实战指南
网络·网络协议·tcp/ip
星恒讯工业路由器1 天前
远程访问技术解析:从内网穿透到安全隧道的三种主流方案
网络·信息与通信·内网穿透·远程访问·vpn隧道
超智算科技1 天前
超智算领衔协办“NVIDIA创业企业展示·西安站”,全栈AI服务赋能行业生态协同发展
大数据·网络·人工智能·物联网·百度