主题
Nginx / Apache 自动部署
服务器环境
- 操作系统:Linux(支持 systemd / OpenRC / SysVinit)
- Web 服务器:Nginx 或 Apache
- 权限要求:root 或 sudo 权限
功能概览
- 一键部署证书到 Nginx / Apache 站点
- 守护进程自动续签
- 证书备份与回滚
- Docker 容器 Nginx 支持
- 在线升级
安装
安装最新稳定版:
bash
curl -fsSL https://release.cnssl.com/sslctl/install.sh | sudo bash安装测试版:
bash
curl -fsSL https://release.cnssl.com/sslctl/install.sh | sudo bash -s -- --dev安装指定版本:
bash
curl -fsSL https://release.cnssl.com/sslctl/install.sh | sudo bash -s -- --version 1.0.0强制重新安装:
bash
curl -fsSL https://release.cnssl.com/sslctl/install.sh | sudo bash -s -- --force一键部署(推荐)
bash
sslctl setup --url https://your-api-url --token your-token --order 12345自动完成以下操作:
- 检测 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 天 自动续签,本地配合选择续签模式:
| 模式 | 说明 | 提前天数 |
|---|---|---|
| 拉取模式(默认) | 等待服务端续签后拉取新证书 | 13 天 |
| 本地私钥模式 | 本地生成私钥和 CSR 提交签发 | 15 天 |
- 拉取模式:无需管理私钥,由服务端完成续签后直接拉取部署
- 本地私钥模式:私钥始终保留在本地,通过 CSR 提交签发请求
Docker 支持
工具自动检测 Docker 容器中的 Nginx,支持两种部署方式:
- 挂载卷模式:证书通过共享卷部署到容器
- docker cp 模式:通过
docker cp命令复制证书到容器
自动检测本地和容器中的站点:
bash
sslctl scan工作目录
/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 |