自建私有 ACME 证书颁发中心:LabCA 部署指南

什么是 LabCA?
LabCA 是一款开源的、轻量级的 ACME(Automatic Certificate Management Environment)证书颁发中心。 它是一个基于 Let's Encrypt 开源 ACME(自动证书管理环境)实现的私有证书颁发机构,从名字上也能看得出来,它最适合于 HomeLab 环境。它的核心基于 Let's Encrypt 的 Boulder 引擎,并在其之上构建了友好的 Web 管理界面。
我们可以把它理解为:
“内网版 Let’s Encrypt”支持 ACME 协议,可自动向内部服务签发 SSL/TLS 证书。
LabCA 的特点非常鲜明:
轻量、极简
部署非常简单,一个 docker-compose 就能跑起来,没有繁琐的配置,关于 docker-compose 可以先简单的理解为它是一个管理多个容器的配置文件(YAML 格式),只需要一条命令就可以把一个复杂的业务系统跑起来,后续会有详细的介绍,敬请期待。
支持 ACME 协议
意味着可以直接使用以下工具申请证书:
- • acme.sh
- • certbot
- • Traefik / Caddy(自动签证书)
- • Kubernetes cert-manager
也就是说,内网已有的自动化签证生态,可以无缝迁移至私有环境。
内置 Web UI(可视化监控)
用于查看(仅查看,没有管理功能):
- • 已签发的证书
- • ACME 请求日志
- • 根证书、中间证书
- • 配置状态
界面虽简洁,但足够应对日常运维。
开源、免费
项目托管在 GitHub,接受所有人的审核,相对安全可控。
LabCA 部署教程(10 分钟完成)
以下示例基于 Docker + Docker Compose
1. 创建项目目录
mkdir -p /opt/labcacd /opt/labca2. 拉取源码
git clone https://github.com/hakwerk/labca.gitcd labca/buildexport LABCA_FQDN=labca.example.com 该域名要在内网的 DNS 服务器上完成配置,内网 DNS 的部署请参考DNS 服务器部署完全指南:BIND 跨平台实战
3. 启动服务
docker compose up -d4. 打开浏览器访问 LabCA
https://labca.example.com首次进入会提示你设置 CA 信息,包含:
- • CA 名称
- • 根证书
- • 发证策略(Profiles)
- • 管理员账户

完成后即可看到 LabCA 的管理界面:
- • Dashboard:运行状态
- • Certificates:所有已颁发证书
- • ACME 配置
- • Public Pages(下载 Root CA)

信任根证书
由于是私有 CA,访问时浏览器会提示“证书不受信任”。
解决方法:
- 1. 进入 LabCA → Public Pages
- 2. 下载 Root CA 证书
- 3. 安装到系统/浏览器的“受信任根证书”中
安装完成后,使用 LabCA 签发的所有证书都会自动显示为受信任状态。各平台如何安装 Root CA 请参考一文搞懂 Split DNS:用群晖实现内外网同域名自动解析!

使用 LabCA 申请证书(acme.sh 示例)
LabCA 完整兼容 ACME 协议,可直接用 acme.sh 签发证书。
1. 安装 acme.sh
curl https://get.acme.sh | shsource ~/.bashrc2. 注册 ACME 账户(重要)
acme.sh --register-account \ --server https://labca.domain.com/directory \ -m admin@your.domain3. 申请证书(以 nginx.example.com 内网服务为例)
HTTP-01 + webroot 模式
acme.sh --issue \ -d nginx.example.com \ -w /opt/acme/www \ --server https://labca.domain.com/directory确保 Nginx 提供 ACME 验证目录:
location /.well-known/acme-challenge/ { root /opt/acme/www;}4. 安装证书并自动重载 Nginx
acme.sh --install-cert -d nginx.example \ --key-file /etc/nginx/ssl/nginx.example.key \ --fullchain-file /etc/nginx/ssl/nginx.example.fullchain.pem \ --reloadcmd "systemctl reload nginx"证书续期 acme.sh 会自动处理,无需额外配置。
LabCA Web UI 能做什么?
LabCA 的 Web UI 是只读的可视化界面,只能用于:
- • 查看证书签发记录
- • 查看 ACME Order 请求
- • 查看根证书、中间证书
- • 查看系统负载、任务队列
- • 查看 Profile 配置
目前 UI 不提供“撤销证书、手动申请证书”等操作,因为 LabCA 的设计理念是:
所有证书操作应通过 ACME 自动化工具完成(如 acme.sh、certbot)
这非常符合现代 DevOps 的理念。
LabCA 适合哪些场景?
LabCA 非常适合企业内部环境,包括:
- • 内网 Web 站点 HTTPS 化
- • 内部微服务双向 TLS
- • Kubernetes 证书自动化
- • 零信任(Zero Trust)身份体系
- • VPN、网关、内部设备证书
- • 私有云环境下替代 Let's Encrypt
尤其是你需要:
✔ 私有✔ 自动✔ 高兼容性✔ 易部署✔ 低维护
LabCA 几乎是最简洁也最“趁手”的 ACME CA。
与其他 CA 的对比
| 功能 | LabCA | step-ca | EJBCA |
|---|---|---|---|
| 开源 | ✔ | ✔ | ✔(社区版) |
| ACME 协议 | ✔ | ✔ | ✔ |
| 部署难度 | ⭐⭐(最低) | ⭐⭐⭐ | ⭐⭐⭐⭐⭐(最高) |
| 适合规模 | 中小 | 中大型 | 企业级 |
| 功能丰富度 | 中 | 高 | 很高 |
| UI 管理 | 简单 | 中等 | 全功能 |
你可以根据需求选择:
- • 想快速私有化 ACME → LabCA
- • 想完整 PKI 体系 → step-ca/EJBCA
写在最后
LabCA 可以说是一款非常优秀的私有 ACME 证书颁发系统,具有:
- • 部署轻量
- • ACME 全兼容
- • 易于集成
- • 自动化能力强
- • 完整 Web UI
不要嫌弃它没有证书管理功能,因为 LabCA 的目标是:
“一个轻量、自托管的 ACME CA(私有 Let's Encrypt),而不是传统 PKI 管理系统。”
它的架构假定:
- • 证书用户不应该手动管理证书
- • 一切交给 ACME 客户端自动运行
- • UI 只提供审计与可视化信息
这是与 step-ca / cfssl 等 PKI 系统不同的设计选择。
如果你的目标是在内网环境构建可自动签发/续期的 HTTPS 体系,那么 LabCA 基本能在 10 分钟内让你搭建出一个“私有版 Let’s Encrypt”。
本文内容仅供参考,不构成任何专业建议。使用本文提供的信息时,请自行判断并承担相应风险。



