用certd,5分钟搞定HTTPS证书
本文最后更新于0 天前,其中的信息可能已经过时,如有错误请发送邮件到mail@liseezn.top

网站部署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中申请HTTPS证书

回到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的组合不仅免费,还能自动续期,后续不用再操心证书过期的问题,非常适合个人网站、博客等场景。

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

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
跳至工具栏