惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
F
Fortinet All Blogs
博客园 - 聂微东
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Hugging Face - Blog
Hugging Face - Blog
V
Visual Studio Blog
小众软件
小众软件
有赞技术团队
有赞技术团队
雷峰网
雷峰网
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
AWS News Blog
AWS News Blog
C
Cisco Blogs
美团技术团队
T
Threat Research - Cisco Blogs
C
CERT Recently Published Vulnerability Notes
人人都是产品经理
人人都是产品经理
宝玉的分享
宝玉的分享
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
酷 壳 – CoolShell
酷 壳 – CoolShell
Stack Overflow Blog
Stack Overflow Blog
W
WeLiveSecurity
D
DataBreaches.Net
博客园 - 司徒正美
Blog — PlanetScale
Blog — PlanetScale
IT之家
IT之家
云风的 BLOG
云风的 BLOG
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Simon Willison's Weblog
Simon Willison's Weblog
Google DeepMind News
Google DeepMind News
T
The Blog of Author Tim Ferriss
Know Your Adversary
Know Your Adversary
NISL@THU
NISL@THU
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
Vercel News
Vercel News
月光博客
月光博客
T
Tailwind CSS Blog
H
Help Net Security
aimingoo的专栏
aimingoo的专栏
P
Proofpoint News Feed
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Spread Privacy
Spread Privacy
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Cisco Talos Blog
Cisco Talos Blog
Microsoft Security Blog
Microsoft Security Blog
V
V2EX
WordPress大学
WordPress大学
Cyberwarzone
Cyberwarzone
Recent Announcements
Recent Announcements

liseezn'blog

补:2025年度总结 – liseezn'blog 博客900天啦 – liseezn'blog 在Zeabur部署Rhex现代论坛 – liseezn'blog Rhex论坛接入DeepSeek 踩坑实录 – liseezn'blog SVGcode 一键部署到 Zeabur – liseezn'blog Edge密码危机自救:1小时的迁移双持方案 – liseezn'blog Token到底是什么意思 – liseezn'blog 使用Next.js重构主页 – liseezn'blog 入手两个4字母域名 – liseezn'blog SEE~Friends 3.4.0 版本更新|从稳定可用,到好用耐用 – liseezn'blog 解决Docker构建PHP8.2+XLoad镜像常见报错,附国内加速+GitHub推送指南 – liseezn'blog SEE~Friends v3.1.0 版本更新|更稳定的友链管理,体验再升级 – liseezn'blog OpenClaw 完整部署+接入OpenRouter全教程(Zeabur平台) – liseezn'blog SeeFriends:一款让你轻松管理友情链接的 WordPress 插件 – liseezn'blog Zeabur 一键部署 OpenClaw 教程(折后最低1.6美元/月) – liseezn'blog Zeabur部署Matomo教程 – liseezn'blog 开源一款BMI+体脂率综合计算器 – liseezn'blog 学生综合素质评价系统操作教程 – liseezn'blog 轻松迁移网站:使用UpdraftPlus完整教程 – liseezn'blog Steam史低折扣 – liseezn'blog DeepSeek + Xmind:轻松把 PDF、Word 文档转思维导图!pdf/word文档转思维导图 – liseezn'blog Argon主题博客美化 – liseezn'blog 有自己的域名啦 – liseezn'blog LXZCMC我的世界服务器 – liseezn'blog Wordpass_Argon主题安装 – liseezn'blog 我开了属于自己的 MC 服务器:LxZCMC,给每一份热爱一个落脚的方块天地 – liseezn'blog ComfyUI 实战:从安装到生成第一张 AI 绘画 – liseezn'blog n8n 入门:用可视化工作流打造你的专属自动化工具 – liseezn'blog Ollama从入门到进阶:在你的电脑上运行大模型 – liseezn'blog OpenTofu 实战:用开源 IaC 工具一键部署 Docker 应用 – liseezn'blog Zed 编辑器高效配置指南:从安装到打造专属前端工作流 – liseezn'blog 强制使用 HTTPS:提升网站安全性 – liseezn'blog 在 lita.eu.org 免费主机上搭建 博客 – liseezn'blog
用certd,5分钟搞定HTTPS证书 – liseezn'blog
liseeze · 2026-01-03 · via liseezn'blog

本文最后更新于146 天前,其中的信息可能已经过时,如有错误请发送邮件到[email protected]

网站部署HTTPS,最头疼的问题之一就是HTTPS证书申请——要么流程复杂,要么验证失败,尤其是没有公网80端口时更是无从下手。经过多次踩坑,我发现certd容器(开源证书工具)是最适合新手的:无需暴露服务器端口、自动续期、配置简单,全程用Docker一键部署。这篇文章会把每一步拆解得明明白白,即使是技术小白也能跟着操作成功!

为什么选这个组合?

1. 核心优势(新手必看)

  • 免费到底:certd是开源工具,支持Let’s Encrypt等免费证书机构,零成本搞定HTTPS;
  • 无需80端口:用DNS验证方式,不用开放服务器80/443端口,内网服务器也能申请,安全性更高;
  • 自动续期:证书快过期时,certd会自动通过Cloudflare API续签,不用手动操作,一劳永逸;
  • 容器化部署:Docker一键启动certd,不用配置复杂的运行环境,新手也能轻松上手。

2. 前期准备(提前备好这些)

  • 一个域名(比如我的域名liseezn.top);
  • 一台服务器(云服务器/内网服务器均可),已安装Docker和Docker Compose:
  • Windows/Mac:直接装Docker Desktop(内置Compose,官网下载:https://www.docker.com/products/docker-desktop/ );
  • Linux:按官方教程安装Docker和Docker Compose(https://docs.docker.com/compose/install/linux/ );
  • 服务器能正常访问外网(需要拉取certd镜像和调用Cloudflare API)。

第一步:部署certd容器(Docker一键操作)

1. 创建专属目录(避免文件混乱)

打开服务器的终端(Windows用PowerShell,Linux/Mac用Terminal),执行以下命令,创建一个专门存放certd文件的目录:

# 通用命令,Windows/Linux/Mac都能用
mkdir certd && cd certd

2. 下载certd的Docker配置文件

certd官方提供了现成的docker-compose.yaml文件,我们直接下载(如果下载失败,后面有手动新建的方法):

# Linux/Mac用户(有wget)
wget https://gitee.com/certd/certd/raw/v2/docker/run/docker-compose.yaml -O docker-compose.yaml

# Windows PowerShell用户(无wget,用内置命令)
Invoke-WebRequest -Uri "https://gitee.com/certd/certd/raw/v2/docker/run/docker-compose.yaml" -OutFile "docker-compose.yaml"

# 备用方案:浏览器手动下载
打开链接:https://gitee.com/certd/certd/raw/v2/docker/run/docker-compose.yaml
右键 → 另存为 → 保存到刚才创建的「certd」目录,文件名保持「docker-compose.yaml」(别改成.txt)

3. 简单修改配置文件(新手也能看懂)

用记事本(Windows)或 nano(Linux)打开docker-compose.yaml文件,只需要修改3个地方,其他保持默认:

version: '3'
services:
  certd:
    image: ghcr.io/certd/certd:v2.10.0  # 指定版本,避免自动更新出问题
    container_name: certd  # 容器名称,方便管理
    restart: always  # 容器崩溃自动重启,不用手动启动
    ports:
      - "7001:7001"  # 端口映射:左边是服务器端口,右边是容器端口
                     # 默认7001 如果7001被占用,改左边的7001为其他端口(如7081)
    environment:
      - TZ=Asia/Shanghai  # 时区设置,避免日志时间错乱
    volumes:
      - ./data:/app/data  # 数据持久化:证书、配置会存在这里,容器删了也不丢
      - ./logs:/app/logs  # 日志目录,申请失败时看日志找原因
      - /etc/localtime:/etc/localtime:ro

4. 启动certd容器(关键一步)

在「certd」目录下执行以下命令,启动容器:

# Docker Compose V2(推荐,Docker Desktop内置)
docker compose up -d

# 若提示「docker compose: 未找到命令」,用V1命令(Linux手动装的docker-compose)
docker-compose up -d
  • 启动成功后,执行docker ps | grep certd,如果看到「Up X minutes」,说明certd已经在后台运行了!

5. 访问certd网页后台

打开浏览器,输入「http://服务器IP:端口号」(比如我的服务器,就本地用就本地IP是172.0.0.0,端口是7001,所以访问http://172.0.0.0:7001);

  • 默认账号:admin,默认密码:123456
  • 首次登录系统提示要先改密码,改密码即可

第二步:配置验证DNS,获取API Token

这是申请证书的核心步骤,新手容易踩坑,一定要仔细看!

1. 创建Cloudflare API Token(关键权限配置)(以托管在Cloudflare域名为例)

API Token是certd调用Cloudflare API的“钥匙”,必须给对权限,否则会报403错误:

  1. 点击Cloudflare右上角头像 → 「My Profile」→ 左侧「API Tokens」→ 「Create Token」;
  2. 选择「Edit zone DNS」模板(专门用于DNS编辑,新手不用自定义权限),点击「Use template」;
  3. 配置权限(3个关键项,错了会失败):
  • 「Permissions」:默认是「DNS → Edit」(必须是Edit,只读权限无法添加验证记录);
  • 「Zone Resources」:选择「Specific zone」→ 选中你的域名(如xxx.top),只授权这个域名,更安全;
  • 「Client IP Address Filtering」(IP筛选,可选但推荐):
    • 「Operator」选「Equals」(如果服务器公网IP是固定的,比如云服务器);
    • 「Value」填服务器的公网IP(查询方法:服务器终端执行curl ifconfig.me,或浏览器打开ip.cn查看);
    • 若服务器IP不固定(如家用宽带),可以留空(不限制IP),但长期建议用DDNS;
  1. 点击「Continue to summary」→ 「Create Token」,生成后立即复制Token(仅显示一次,丢了要重新创建!)。

回到certd网页后台,跟着步骤走,几分钟就能申请成功:

  1. 点击左侧「证书管理」→ 「添加证书」;
  2. 填写证书基本信息(按提示填,新手不用改其他选项):
  • 域名:输入你的域名(如xxx.com,支持泛域名*.xxx.com,需要就填);
  • 证书机构:选择「Let’s Encrypt」(免费、稳定);
  • 验证方式:选择「DNS验证」(不用开80端口,推荐新手);
  • DNS提供商:选择「你的域名托管商」;
  1. 填写Cloudflare配置(之前复制的信息派上用场了):
  • API类型:选择「API Token」(别选Global API Key,权限太大不安全);
  • API Key/Token:粘贴刚才创建的Cloudflare API Token;
  • 其他字段不用填(Email是Global API Key才需要的);
  1. 点击「提交」,发起证书申请;
  2. 等待验证:certd会自动通过Cloudflare API添加TXT验证记录,验证成功后会自动下载证书,全程不用手动操作;
  3. 查看结果:申请成功后,在「证书管理」中会显示「已生效」,证书文件会保存在服务器「certd/data/certs」目录下。

新手必看:常见问题排查(踩坑总结)

1. 访问certd后台提示“无法访问”

  • 检查服务器防火墙:开放配置的端口(如8081),云服务器还要在安全组中放行;
  • 检查容器是否运行:执行docker ps | grep certd,若没显示,执行docker compose logs certd看报错。

2. 申请证书提示“403 Forbidden”(Cloudflare认证失败)

  • 核对API Token:是否复制正确,权限是否是「DNS → Edit」+「特定域名」;
  • 核对IP筛选:如果设置了IP筛选,是否填对服务器公网IP。

3. 申请证书超时失败

  • 检查服务器网络:能否访问https://api.cloudflare.com(执行curl https://api.cloudflare.com测试);
  • 检查Cloudflare DNS生效状态:域名的Nameserver是否已经换成Cloudflare的。

七、后续操作:证书怎么用?怎么续期?

1. 证书使用(以Nginx为例)

证书文件在「certd/data/certs/你的域名/」目录下,核心文件是:

  • fullchain.pem:证书链文件;
  • privkey.pem:私钥文件;
    在Nginx配置文件中添加以下内容,重启Nginx即可启用HTTPS:
server {
    listen 443 ssl;
    server_name xxx.top;  # 你的域名

    ssl_certificate /path/to/certd/data/certs/xxx.top/fullchain.pem;  # 证书链路径
    ssl_certificate_key /path/to/certd/data/certs/xxx.top/privkey.pem;  # 私钥路径

    # 其他配置(如网站根目录、反向代理等)
}

2. 自动续期

certd默认会自动检测证书有效期,提前18(默认)天自动续签,续签后证书文件会自动更新,无需手动操作。可以在「certd后台 → 系统设置 → 证书续期」中查看续期配置。

总结

作为新手,第一次申请HTTPS证书可能会遇到各种小问题,但只要跟着步骤走,尤其是注意Cloudflare API Token的权限配置和Zone ID的正确性,就能顺利搞定。certd+Cloudflare的组合不仅免费,还能自动续期,后续不用再操心证书过期的问题,非常适合个人网站、博客等场景。

如果操作过程中遇到其他问题,欢迎在评论区交流~ 技术之路,踩坑才会成长,希望这篇指南能帮到同样是新手的你!