搬瓦工 VPS Step CA ACME 证书服务搭建教程
Step CA 是 Smallstep 开源的私有证书颁发机构(CA)服务器,内置 ACME 协议支持,可以为内部网络中的服务自动签发和续期 TLS 证书。它相当于一个自建的 Let's Encrypt,但面向内部基础设施。Step CA 特别适合需要为大量内部服务提供 TLS 加密但又不想使用公网 CA 的场景。本文将介绍如何在搬瓦工 VPS 上搭建 Step CA。
一、安装 Step CLI 和 Step CA
# 安装 step CLI
wget https://dl.smallstep.com/gh-release/cli/docs-cli-install/v0.27.2/step-cli_0.27.2_amd64.deb
dpkg -i step-cli_0.27.2_amd64.deb
# 安装 step-ca
wget https://dl.smallstep.com/gh-release/certificates/docs-ca-install/v0.27.2/step-ca_0.27.2_amd64.deb
dpkg -i step-ca_0.27.2_amd64.deb
# 验证安装
step version
step-ca version
二、初始化 CA
step ca init \
--name "My Internal CA" \
--dns ca.example.com \
--dns 127.0.0.1 \
--address :8443 \
--provisioner admin \
--deployment-type standalone
初始化过程会要求设置密码,并生成 CA 根证书和中间证书。配置文件默认保存在 ~/.step/ 目录。
三、启用 ACME 协议
# 添加 ACME 供应商
step ca provisioner add acme --type ACME
# 启动 CA 服务
step-ca $(step path)/config/ca.json
3.1 配置 systemd 服务
cat > /etc/systemd/system/step-ca.service <<'EOF'
[Unit]
Description=step-ca service
After=network-online.target
Wants=network-online.target
[Service]
User=step
Group=step
ExecStart=/usr/bin/step-ca /home/step/.step/config/ca.json --password-file /home/step/.step/secrets/password
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
# 创建专用用户
useradd --system --home /home/step --shell /bin/false step
cp -r ~/.step /home/step/.step
chown -R step:step /home/step
systemctl daemon-reload
systemctl enable step-ca
systemctl start step-ca
四、使用 ACME 客户端申请证书
4.1 使用 step CLI 申请
# 安装 CA 根证书到信任库
step certificate install $(step path)/certs/root_ca.crt
# 使用 ACME 协议申请证书
step ca certificate app.example.com app.crt app.key \
--provisioner acme \
--ca-url https://ca.example.com:8443
4.2 使用 Certbot 申请
# 配置 Certbot 使用私有 CA
REQUESTS_CA_BUNDLE=$(step path)/certs/root_ca.crt \
certbot certonly --standalone \
--server https://ca.example.com:8443/acme/acme/directory \
-d app.example.com \
--agree-tos \
--email admin@example.com
4.3 自动续期
# 使用 step 自动续期
step ca renew app.crt app.key --force
# 配置定时续期
cat > /opt/renew-cert.sh <<'EOF'
#!/bin/bash
step ca renew /etc/ssl/app.crt /etc/ssl/app.key --force
systemctl reload nginx
EOF
chmod +x /opt/renew-cert.sh
echo "0 2 */15 * * root /opt/renew-cert.sh" >> /etc/crontab
五、与 Traefik 集成
# Traefik 静态配置
# certificatesResolvers:
# step-ca:
# acme:
# email: admin@example.com
# storage: /etc/traefik/acme.json
# caServer: https://ca.example.com:8443/acme/acme/directory
# tlsChallenge: {}
六、证书管理
# 查看 CA 根证书信息
step certificate inspect $(step path)/certs/root_ca.crt
# 查看已签发的证书
step certificate inspect app.crt
# 吊销证书
step ca revoke --cert app.crt --key app.key
# 查看 CA 配置
cat $(step path)/config/ca.json
七、安全建议
- 将 CA 私钥存放在安全位置,考虑使用 HashiCorp Vault 保管。
- 设置合理的证书有效期,内部证书建议 30-90 天。
- 通过防火墙限制 CA 服务的访问来源。
- 定期备份 CA 配置和密钥。
总结
Step CA 是搭建私有 ACME 服务的最佳选择,让内部服务享受与 Let's Encrypt 同样的自动化证书管理体验。配合 OpenSSL 和 CFSSL,可以满足各种证书管理需求。选购搬瓦工 VPS 请参考 全部方案,购买时使用优惠码 NODESEEK2026 可享受 6.77% 的折扣,通过 bwh81.net 进入官网购买。