主题
Nginx / Apache 自动部署
服务器环境
- 操作系统:Linux(支持 systemd / OpenRC / SysVinit)
- Web 服务器:Nginx 或 Apache
- 权限要求:root 或 sudo 权限
功能概览
- 一键部署证书到 Nginx / Apache 站点
- 守护进程自动续签
- 证书备份与回滚
- Docker 容器 Nginx 支持
- 在线升级
安装
在证书详情页的「一键部署」中选择 Nginx / Apache,复制安装命令与一键部署命令。

在服务器执行安装命令,安装过程如下图所示:

一键部署
执行证书详情页复制的一键部署命令,工具会自动完成:
- 检测 Web 服务器类型(Nginx / Apache)
- 从部署接口获取证书信息
- 匹配站点并部署证书
- 安装守护服务,定时自动续签
一键部署运行过程如下图所示:

常用选项
| 选项 | 说明 |
|---|---|
--local-key | 使用本机提交模式 |
--yes | 跳过确认提示 |
--no-service | 不安装守护服务 |
常用命令
扫描站点
扫描所有站点:
bash
sslctl scan仅扫描已配置 SSL 的站点:
bash
sslctl scan --ssl-only部署证书
部署指定证书:
bash
sslctl deploy --cert order-12345部署所有证书:
bash
sslctl deploy --all本地证书部署
不依赖部署接口,直接部署本地证书文件。
Nginx 站点部署:
bash
sslctl deploy local --cert cert.pem --key key.pem --site example.comApache 站点部署(需要 CA 证书链):
bash
sslctl deploy local --cert cert.pem --key key.pem --ca chain.pem --site example.com证书回滚
回滚到最新备份:
bash
sslctl rollback --site example.com查看备份列表:
bash
sslctl rollback --site example.com --list回滚到指定版本:
bash
sslctl rollback --site example.com --version 20240101-120000状态与管理
查看服务状态和证书过期详情:
bash
sslctl status升级到最新版本:
bash
sslctl upgrade仅检查更新:
bash
sslctl upgrade --check修复守护服务:
bash
sslctl service repair卸载
卸载工具:
bash
sslctl uninstall卸载并清理所有配置和证书:
bash
sslctl uninstall --purge续签模式
服务端默认在证书到期前 14 天 自动续签,本地选择对应的续签模式:
| 模式 | 说明 | 验证处理 |
|---|---|---|
| 服务端重签(默认) | 等待服务端续签后拉取新证书 | 服务端处理 |
| 本机提交 | 本地生成私钥与 CSR 提交签发,私钥不出服务器 | 客户端处理 |
- 服务端重签:无需管理私钥,由服务端完成续签后拉取并部署
- 本机提交:使用
--local-key启用;私钥始终保留在本地,通过 CSR 提交签发请求
验证方式
本机提交模式下需要选择域名验证方式(服务端重签模式由服务端处理,无需配置):
| 方式 | 适用域名类型 | 工具行为 |
|---|---|---|
| 文件验证 | 普通域名、IP | 工具在站点 webroot 自动放置验证文件,签发后清理 |
| 域名委托 | 普通域名、通配符域名 | 由 DNS CNAME 委托到平台,需预先配置 |
约束:
- IP 域名:只能使用文件验证(无 DNS 记录,无法委托)
- 通配符域名:只能使用域名委托(无法指向具体站点放置文件)
- 普通域名:两者均可
域名委托的 CNAME 配置参见 自动化验证。
Docker 支持
工具自动检测 Docker 容器中的 Nginx,支持两种部署方式:
- 挂载卷模式:证书通过共享卷部署到容器
- docker cp 模式:通过
docker cp命令复制证书到容器
自动检测本地和容器中的站点:
bash
sslctl scan工作目录
text
/opt/sslctl/
├── config.json # 配置文件
├── certs/ # 证书存储
├── backup/ # 证书备份
├── logs/ # 运行日志
└── scan-result.json # 站点扫描缓存环境变量
| 变量 | 说明 |
|---|---|
SSLCTL_API_TOKEN | API Token(优先级高于配置文件) |
SSLCTL_API_URL | API URL(优先级高于配置文件) |
调试模式
遇到问题时可开启调试模式查看详细日志:
bash
sslctl --debug deploy --site example.com调试日志写入 /opt/sslctl/logs/debug/ 目录。
常见问题
扫描不到站点
- 确认 Nginx / Apache 已安装并运行
- 检查配置文件语法是否正确:
nginx -t或apachectl configtest
部署后网站无法访问
- 检查防火墙是否开放 443 端口
- 验证证书文件是否完整
- 使用
sslctl --debug deploy查看详细错误
守护服务未运行
- 查看状态:
sslctl status - 修复服务:
sslctl service repair
证书续签失败
- 检查部署接口是否可访问
- 确认 Token 是否有效
- 开启调试模式查看详细日志
平台支持
| 平台 | Nginx | Apache | Docker | 服务管理 |
|---|---|---|---|---|
| Linux (systemd) | ✅ | ✅ | ✅ | systemd |
| Linux (OpenRC) | ✅ | ✅ | ✅ | OpenRC |
| Linux (SysVinit) | ✅ | ✅ | ✅ | SysVinit |