Certimate 项目部署

举报
yd_229065422 发表于 2026/11/09 18:04:46 2026/11/09
【摘要】 一、项目简介做个人产品或在中小团队负责运维时,经常要管理多个域名的证书。手动处理有两个痛点:麻烦:申请、下载、上传、重启服务,域名一多就是重复劳动。易忘:免费证书有效期很短(目前常见为 90 天,并有继续缩短的趋势),忘记续期就会导致网站无法访问。Certimate 的做法是:你在网页里填好域名、DNS 服务商授权和要部署的目标,它按工作流定时自动申请、部署并在到期前续期。 核心特点特点说...

一、项目简介

做个人产品或在中小团队负责运维时,经常要管理多个域名的证书。手动处理有两个痛点:

  • 麻烦:申请、下载、上传、重启服务,域名一多就是重复劳动。
  • 易忘:免费证书有效期很短(目前常见为 90 天,并有继续缩短的趋势),忘记续期就会导致网站无法访问。

Certimate 的做法是:你在网页里填好域名、DNS 服务商授权和要部署的目标,它按工作流定时自动申请、部署并在到期前续期。

核心特点

特点 说明
私有部署 数据全部保存在自己的服务器,不经过第三方
零依赖 不需要另装数据库、运行时或框架,下载即用
低资源占用 非常轻量,官方描述运行内存仅十几 MB 量级
跨平台 支持 Windows、Linux、macOS
可视化工作流 申请、部署、通知等环节用节点编排,全自动运行
多服务商支持 对接主流云厂商的 DNS 与部署目标(云存储、CDN、负载均衡等)
透明可审计 二进制与 Docker 镜像由 CI 构建,过程公开

二、工作原理

  1. 你在管理页面填写:要申请证书的域名、DNS 服务商的授权信息、要部署到的目标服务授权信息。
  2. Certimate 通过 ACME 协议向证书颁发机构发起申请,并用 DNS 验证方式证明域名归属。
  3. 证书签发后,按工作流把证书部署到指定目标(如 CDN、对象存储、负载均衡、服务器文件等)。
  4. 到期前自动续期并重新部署,同时可通过通知渠道告知结果。

三、部署方案选择

方案 适用场景 说明
二进制文件 最简单,VPS、物理机、Windows 均可 下载解压后直接运行,官方推荐的入门方式
Docker / Docker Compose 已有容器环境、NAS 便于升级与迁移,推荐长期使用
源码运行 需要二次开发 需 Go 环境,一般用户无需使用

四、环境要求

  • 一台能长期运行的机器(Linux 服务器、NAS、家用主机均可),内存 128MB 以上足够
  • 能访问证书颁发机构和你所用 DNS 服务商的接口
  • 默认管理端口:8090(放行或通过反向代理访问)
  • 域名托管在受支持的 DNS 服务商,并能创建 API 密钥
  • 使用 Docker 方案时:Docker Engine 与 Docker Compose 插件

五、二进制部署

5.1 下载与运行

  1. 在项目的发布页面下载与你系统和架构匹配的压缩包。
  2. 解压到固定目录,例如 /opt/certimate:
mkdir -p /opt/certimate
cd /opt/certimate
# 把下载好的压缩包解压到此目录后:
chmod +x certimate
./certimate serve
  1. 默认监听 8090 端口。若需要让局域网或公网访问,可指定监听地址:
./certimate serve --http 0.0.0.0:8090

5.2 注册为系统服务(Linux,systemd)

创建 /etc/systemd/system/certimate.service:

[Unit]
Description=Certimate
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
WorkingDirectory=/opt/certimate
ExecStart=/opt/certimate/certimate serve --http 127.0.0.1:8090
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

启用并启动:

sudo systemctl daemon-reload
sudo systemctl enable --now certimate
sudo systemctl status certimate

说明:上面把监听地址设为 127.0.0.1,是为了配合反向代理使用,不直接暴露到公网。局域网内直接访问时改为 0.0.0.0。

5.3 macOS 提示

macOS 首次运行可能提示「无法验证开发者」,到「系统设置 → 隐私与安全性」中点击「仍然允许」后再运行。


六、Docker Compose 部署

6.1 创建目录与配置

mkdir -p ~/certimate && cd ~/certimate

创建 docker-compose.yml(示例;官方仓库的 docker 目录里也提供了配置文件,建议对照使用):

services:
  certimate:
    image: certimate/certimate:latest
    container_name: certimate
    restart: unless-stopped
    ports:
      - "8090:8090"
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./data:/app/pb_data

要点:

  • ./data 对应容器内的数据目录,所有账号、授权、工作流和证书都保存在这里,务必持久化并备份。
  • 需要让 Certimate 把证书写入宿主机某个目录(例如给 Nginx 使用),要额外挂载对应目录,并在工作流的部署节点中填写容器内路径。
  • 生产环境建议把镜像固定到具体版本号,按需升级。

6.2 启动

docker compose up -d
docker compose ps
docker compose logs -f certimate

七、首次登录与安全设置

  1. 浏览器访问「服务器IP地址:8090」。
  2. 使用项目文档中给出的初始管理员账号登录。早期版本 README 给出的默认账号为 admin@certimate.fun,默认密码为 1234567890,不同版本可能不同,请以你所用版本的说明为准。
  3. 登录后立即修改管理员邮箱和密码,使用强密码。这个默认账号是公开信息,不改等于没设防。
  4. 管理端不要在未保护的情况下暴露到公网,建议放在反向代理之后并启用 HTTPS,必要时限制来源 IP。

八、配置第一个证书流程

8.1 添加授权

进入「授权管理」,添加你的 DNS 服务商(用于 DNS 验证)和部署目标服务商的 API 凭据。

安全建议:

  • 给 API 密钥只开放必要的最小权限,例如只允许修改 DNS 解析记录。
  • 优先使用子账号或专用密钥,不要使用主账号密钥。

8.2 设置证书颁发机构与邮箱

在系统设置中选择证书颁发机构(如 Let’s Encrypt、ZeroSSL、Google Trust Services 等,具体以界面提供的选项为准),并配置接收通知的邮箱。部分颁发机构需要额外的账号信息。

8.3 创建工作流

  1. 新建工作流,设置触发方式:手动,或定时(如每天检查一次)。
  2. 添加「申请」节点:填写域名(可以是多域名或泛域名)、选择 DNS 授权、证书算法和提前续期天数。
  3. 添加「部署」节点:选择部署目标(CDN、对象存储、负载均衡、服务器文件、面板或网关等)。
  4. 可选添加「通知」节点:把成功或失败结果推送到邮件、即时通讯等渠道。
  5. 先手动执行一次,确认整条链路跑通,再启用定时。

8.4 部署到自己的 Nginx 等服务

常见做法是用「部署到本地或远程服务器」类节点,把证书和私钥写到指定路径,再执行重载命令,例如:

nginx -s reload

使用 Docker 部署 Certimate 时,请确认容器内有权限写入挂载目录,且重载命令在容器内可用,否则可改用 SSH 方式部署到宿主机。


九、反向代理与 HTTPS

Caddy 示例(自动签发管理端自身的证书):

cert.你的域名 {
    encode zstd gzip
    reverse_proxy 127.0.0.1:8090
}

若使用 Nginx,需要开启 WebSocket 或长连接升级支持,以保证管理界面的实时功能正常。

也可以让 Certimate 给自身签发证书,具体用法参见所用版本的文档说明。


十、备份、升级与维护

10.1 备份

  • 二进制部署:备份运行目录下的 pb_data 数据目录。
  • Docker 部署:备份挂载的 data 目录。
  • 该目录包含 API 授权信息和私钥,备份文件须加密保存,且不要上传到公开位置。
  • 建议升级前先备份,定期做恢复演练。

10.2 升级

Docker:

cd ~/certimate
docker compose pull
docker compose up -d
docker image prune

二进制:停止服务,用新版本的可执行文件替换旧文件,保留 pb_data 目录不动,然后重新启动:

sudo systemctl stop certimate
# 替换 /opt/certimate/certimate 为新版本
sudo systemctl start certimate

升级前请阅读版本发布说明,留意是否有数据结构或配置变更。

10.3 日常维护

  • 关注工作流的执行记录,确认每次续期成功。
  • 开启失败通知,避免静默失败直到证书过期才发现。
  • API 密钥定期轮换,授权不再使用时及时删除。
  • 保持服务器时间准确,时间偏差可能导致验证或续期异常。

十一、常见问题排查

现象 可能原因 处理办法
无法访问管理页面 端口未放行,或只监听了 127.0.0.1 检查防火墙和监听地址
默认账号登录失败 版本不同或初始密码已变更 查看所用版本的说明,或重置管理员账号
DNS 验证失败 授权无权限、域名不在该服务商、解析未生效 检查 API 权限与域名归属,稍后重试
签发失败提示频率限制 短时间内重复申请 等待限制解除,减少测试次数
部署成功但网站仍用旧证书 服务未重载 在部署节点添加重载命令,或检查证书路径
容器内无法写入证书目录 目录未挂载或权限不足 增加挂载并检查目录权限
续期没有触发 工作流未启用或定时设置错误 检查触发设置与执行记录
数据丢失 未挂载数据目录 确认 pb_data 对应目录已持久化

十二、命令速查

# 二进制
./certimate serve
./certimate serve --http 0.0.0.0:8090

# systemd
sudo systemctl enable --now certimate
sudo systemctl restart certimate
sudo journalctl -u certimate -f

# Docker
docker compose up -d
docker compose logs -f certimate
docker compose pull && docker compose up -d

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。