全自动搞定!用allinssl实现APISIX证书一键部署与续期
背景介绍
在微服务架构盛行的今天,SSL/TLS证书管理已成为运维工作的核心挑战之一。传统的人工管理方式不仅耗时费力,还容易因疏忽导致证书过期引发业务中断。尤其在管理数十甚至数百个域名时,手动维护几乎不可能完成。
allinssl是一款开源的SSL证书全生命周期管理工具,专为解决这一痛点而生。它能实现证书的自动申请、续期、部署和监控,本文将详细介绍如何结合allinssl与APISIX网关,打造一套完整的自动化证书管理体系。
环境准备
开始部署前,请确保具备以下环境:
- 操作系统:CentOS 7.9
- Docker:1.24版本
- APISIX:已安装并运行
- APISIX Dashboard:已安装并运行
注:本文假定您已完成APISIX及APISIX Dashboard的安装配置,且APISIX Admin API可通过
127.0.0.1:9180访问。
allinssl简介
allinssl是一个集证书申请、管理、部署和监控于一体的SSL证书全生命周期管理平台。它支持Let's Encrypt、ZeroSSL等主流免费CA,具备自动监控证书有效期并提前续期的能力,同时支持多种部署目标,包括自建服务器、CDN、对象存储等。
核心特性:
- 全自动证书申请和续期
- 多平台部署支持
- 证书过期监控告警
- 可视化管理界面
- 安全可控的管理入口
快速部署allinssl
通过Docker可快速部署allinssl服务:
docker run -itd \
--name allinssl \
-p 7979:8888 \
-v /www/allinssl/data:/www/allinssl/data \
-e ALLINSSL_USER=allinssl \
-e ALLINSSL_PWD=allinssldocker \
-e ALLINSSL_URL=allinssl \
-e TZ=Asia/Shanghai \
allinssl/allinssl:latest
执行后,访问http://your-server-ip:7979即可进入allinssl管理界面。
配置腾讯云API密钥
本文以腾讯云为例演示DNS验证配置:
- 登录腾讯云控制台,进入访问密钥管理页面
- 点击"新建密钥"创建API密钥
- 保存SecretId和SecretKey(注意SecretKey仅显示一次)
- 建议创建专用子用户,仅授予DNSPod相关权限以保障安全

在allinssl中配置腾讯云API密钥:
- 登录allinssl管理界面
- 进入"授权API管理"页面
- 点击"添加授权API"
- 选择"腾讯云"作为DNS服务商
- 填写获取的SecretId和SecretKey
- 保存配置并测试连接

配置APISIX服务器授权
在allinssl中配置APISIX服务器连接信息:
- 进入"授权API管理"页面
- 点击"添加授权API"
- 选择"SSH"方式
- 填写APISIX服务器连接信息

获取APISIX管理密钥(X-API-KEY)
使用APISIX Admin API需提供正确管理密钥,默认密钥为:
edd1c9f034335f136f87ad84b625c8f1
⚠️ 生产环境中强烈建议修改默认密钥以确保安全性。
查找当前API密钥
确认当前APISIX实例API密钥的方法:
-
检查APISIX配置文件:
cat /usr/local/apisix/conf/config.yaml | grep -A 3 admin_key -
在配置文件中找到类似内容:
apisix: admin_key: - name: "admin" key: edd1c9f034335f136f87ad84b625c8f1 role: admin -
其中
key字段即为X-API-KEY值。

修改默认API密钥(推荐)
提升生产环境安全性:
-
编辑APISIX配置文件:
vim /usr/local/apisix/conf/config.yaml -
找到admin_key部分并修改key值为复杂密钥
-
重启APISIX服务:
apisix stop && apisix start
配置企业微信通知(可选)
为实时掌握证书状态,建议配置企业微信通知:
获取企业微信webhook
在有权限的群聊中按图设置webhook并获取URL:


在allinssl中配置webhook
- 登录allinssl管理界面
- 进入"通知渠道管理"页面
- 点击"添加通知渠道"
- 选择"企业微信应用"类型
- 填写相关信息:

- 保存配置并测试连接
配置完成后,可在证书工作流中选择该通知渠道,证书申请、续期或部署完成时将收到企业微信通知。
配置证书自动部署
创建证书自动部署任务


工作流配置要点:
- 执行模式:默认自动执行,可设定定时任务
- 申请证书:选择合适的证书提供商和验证方式

- 部署证书:配置部署目标和后置命令

部署命令如下:
cd /home/zjl/ssl/www/ && \
yum -y install jq && \
curl -X PUT "http://127.0.0.1:9180/apisix/admin/ssls/www-1" \
-H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" \
-H "Content-Type: application/json" \
-d "$(
jq -n \
--arg cert "$(cat cert)" \
--arg key "$(cat key)" \
--argjson snis '["www.howlaisi.com"]' \
'{
id: "www-1",
cert: $cert,
key: $key,
snis: $snis
}'
)"
命令解析:
- 进入证书文件所在目录
- 安装jq工具处理JSON数据
- 通过APISIX Admin API上传证书至APISIX
- 指定证书适用域名(SNI)
通知设置


APISIX SSL配置详解
APISIX通过Admin API管理SSL证书,API端点格式:
http://127.0.0.1:9180/apisix/admin/ssls/{id}
参数说明:
127.0.0.1:9180:APISIX Admin API地址ssls:SSL证书资源路径{id}:证书唯一标识符
请求头要求:
X-API-KEY:APISIX管理密钥Content-Type:指定为JSON格式
请求体字段:
id:证书IDcert:证书内容key:私钥内容snis:证书适用域名列表
验证证书部署
部署完成后验证方法:
- 检查APISIX Admin API返回结果
- 浏览器访问域名验证证书有效性
- 使用curl测试HTTPS连接:
curl -v https://www.howlaisi.com
自动化续期流程
allinssl自动监控证书有效期,在到期前自动续期并通过配置的后置命令部署至APISIX,实现证书无缝更新。
注意事项
- 妥善保管APISIX Admin API密钥
- 根据实际情况调整证书文件路径
- 准确配置域名列表
- 确保allinssl服务器可SSH连接APISIX服务器
- 定期检查证书部署状态
- 腾讯云API密钥建议使用子账号和最小权限原则
总结
通过allinssl与APISIX的深度整合,我们构建了一套完整的SSL证书自动化管理体系。这套方案不仅显著提升了运维效率,更从根本上杜绝了因证书过期导致的业务中断风险。
方案优势:
- 集中化管理:统一平台管控所有证书
- 全自动运维:申请、续期、部署全流程自动化
- 安全可靠:减少人工干预,降低安全风险
- 可视化监控:实时掌握证书状态
借助这套自动化解决方案,运维团队可将精力聚焦于核心业务,无需再为证书管理工作烦扰。
评论区