Skip to content

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

自动完成以下操作:

  1. 检测 Web 服务器类型(Nginx / Apache)
  2. 从部署接口获取证书信息
  3. 匹配站点并部署证书
  4. 安装守护服务,定时自动续签

常用选项

选项说明
--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.com

Apache 站点部署(需要 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_TOKENAPI Token(优先级高于配置文件)
SSLCTL_API_URLAPI URL(优先级高于配置文件)

调试模式

遇到问题时可开启调试模式查看详细日志:

bash
sslctl --debug deploy --site example.com

调试日志写入 /opt/sslctl/logs/debug/ 目录。

常见问题

扫描不到站点

  • 确认 Nginx / Apache 已安装并运行
  • 检查配置文件语法是否正确:nginx -tapachectl configtest

部署后网站无法访问

  • 检查防火墙是否开放 443 端口
  • 验证证书文件是否完整
  • 使用 sslctl --debug deploy 查看详细错误

守护服务未运行

  • 查看状态:sslctl status
  • 修复服务:sslctl service repair

证书续签失败

  • 检查部署接口是否可访问
  • 确认 Token 是否有效
  • 开启调试模式查看详细日志

平台支持

平台NginxApacheDocker服务管理
Linux (systemd)systemd
Linux (OpenRC)OpenRC
Linux (SysVinit)SysVinit

SSL 证书帮助中心