Skip to content

Nginx / Apache 自动部署

服务器环境

  • 操作系统:Linux(支持 systemd / OpenRC / SysVinit)
  • Web 服务器:Nginx 或 Apache
  • 权限要求:root 或 sudo 权限

功能概览

  • 一键部署证书到 Nginx / Apache 站点
  • 守护进程自动续签
  • 证书备份与回滚
  • Docker 容器 Nginx 支持
  • 在线升级

安装

在证书详情页的「一键部署」中选择 Nginx / Apache,复制安装命令与一键部署命令。

sslctl 安装与部署命令

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

sslctl 安装过程

一键部署

执行证书详情页复制的一键部署命令,工具会自动完成:

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

一键部署运行过程如下图所示:

sslctl 一键部署过程

常用选项

选项说明
--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 天 自动续签,本地选择对应的续签模式:

模式说明验证处理
服务端重签(默认)等待服务端续签后拉取新证书服务端处理
本机提交本地生成私钥与 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_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 证书帮助中心