返回文章列表
服务器

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

米易
2025-11-21
40分钟前
自建私有 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/labca

2. 拉取源码

git clone https://github.com/hakwerk/labca.gitcd labca/buildexport LABCA_FQDN=labca.example.com  

该域名要在内网的 DNS 服务器上完成配置,内网 DNS 的部署请参考DNS 服务器部署完全指南:BIND 跨平台实战

3. 启动服务

docker compose up -d

4. 打开浏览器访问 LabCA

https://labca.example.com

首次进入会提示你设置 CA 信息,包含:

  • • CA 名称
  • • 根证书
  • • 发证策略(Profiles)
  • • 管理员账户

完成后即可看到 LabCA 的管理界面:

  • • Dashboard:运行状态
  • • Certificates:所有已颁发证书
  • • ACME 配置
  • • Public Pages(下载 Root CA)


信任根证书

由于是私有 CA,访问时浏览器会提示“证书不受信任”。

解决方法:

  1. 1. 进入 LabCA → Public Pages
  2. 2. 下载 Root CA 证书
  3. 3. 安装到系统/浏览器的“受信任根证书”中

安装完成后,使用 LabCA 签发的所有证书都会自动显示为受信任状态。各平台如何安装 Root CA 请参考一文搞懂 Split DNS:用群晖实现内外网同域名自动解析!


使用 LabCA 申请证书(acme.sh 示例)

LabCA 完整兼容 ACME 协议,可直接用 acme.sh 签发证书。

1. 安装 acme.sh

curl https://get.acme.sh | shsource ~/.bashrc

2. 注册 ACME 账户(重要)

acme.sh --register-account \  --server https://labca.domain.com/directory \  -m admin@your.domain

3. 申请证书(以 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 的对比


功能LabCAstep-caEJBCA
开源✔(社区版)
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”

本文内容仅供参考,不构成任何专业建议。使用本文提供的信息时,请自行判断并承担相应风险。

分享文章
合作伙伴

本站所有广告均是第三方投放,详情请查询本站用户协议