SSL证书自助申请接口

版本:v1.0 | 开发、维护:小七安全团队

接口说明:基于 acme.sh 实现 DNS 手动解析的验证方式、实现自助申请、验证、下载功能

基础信息

接口1:创建 DNS 验证记录

请求信息

请求参数

参数名 位置 类型 是否必填 说明
action Query String 固定值:create
domain Body/Query String 需要申请证书的域名,如:7x0.cn
格式要求:仅支持字母、数字、-、.,不能以-开头/结尾,每个段最长63字符

请求示例

POST /api?action=create HTTP/1.1 Host: localhost:3000 Content-Type: application/json { "domain": "7x0.cn" }

成功响应示例

{ "code": 200, "message": "DNS 验证记录生成成功", "data": { "requestId": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "txt_domain": "_acme-challenge.7x0.cn", "txt_value": "EUq7UXkkqiCaYb4uNjNY0yMzf7D_cuMCEvgk3CFzQIQ", "verify_url": "http://localhost:3000/api?action=verify&domain=7x0.cn", "tips": [ "1. 请在域名解析后台添加 TXT 记录,主机记录为 _acme-challenge(无需加域名)", "2. 添加后建议等待5-10分钟再验证(DNS 生效需要时间)", "3. 验证记录有效期24小时,超时需重新生成", "4. \"Cannot find DNS API hook for: dns_manual\" 是正常提示,无需处理", "5. 验证前请用命令验证 TXT 记录是否生效:nslookup -type=TXT _acme-challenge.7x0.cn" ] } }

失败响应示例

{ "code": 500, "message": "命令执行失败", "data": { "requestId": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "debug_info": {} } }

接口2:验证 DNS 并生成证书

请求信息

请求参数

参数名 位置 类型 是否必填 说明
action Query String 固定值:verify
domain Query String 需要验证的域名,需与创建验证记录时的域名一致

请求示例

GET /api?action=verify&domain=7x0.cn HTTP/1.1 Host: localhost:3000

成功响应示例

{ "code": 200, "message": "证书生成并打包成功", "data": { "requestId": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "download_url": "http://localhost:3000/api?action=download&domain=7x0.cn&filename=7x0.cn_cert_1740600000000.zip", "cert_files": [ "7x0.cn.cer", "7x0.cn.key", "fullchain.cer", "ca.cer" ], "zip_file": "7x0.cn_cert_1740600000000.zip", "tips": [ "1. 证书有效期通常为90天,请及时更新", "2. 压缩包将在24小时后自动清理,请及时下载", "3. 证书文件包含:域名证书、私钥、完整链证书、CA证书", "4. 建议定期备份证书文件,避免丢失" ] } }
提示:验证过程会自动重试 3 次,每次间隔 10 秒;验证失败会精准提示 TXT 记录错误原因。

接口3:下载证书压缩包

请求信息

请求参数

参数名 位置 类型 是否必填 说明
action Query String 固定值:download
domain Query String 证书对应的域名
filename Query String 验证接口返回的 zip_file 文件名,格式:{domain}_cert_{timestamp}.zip

请求示例

GET /api?action=download&domain=7x0.cn&filename=7x0.cn_cert_1740600000000.zip HTTP/1.1 Host: localhost:3000

响应说明

提示:压缩包文件会在生成后 24 小时自动清理,请及时下载;下载链接仅在文件有效期内有效。

通用响应格式

字段名 类型 说明
code Number 状态码:200 成功,400 参数错误,404 资源不存在,500 服务器错误
message String 响应提示信息
data Object 响应数据,包含 requestId(请求ID)和业务数据

常见错误码说明

使用流程

  1. 调用创建验证记录接口(POST /api?action=create),传入需要申请证书的域名
  2. 根据返回的 TXT 记录信息,在域名解析后台添加对应的 DNS TXT 记录
  3. 等待 5-10 分钟(DNS 生效时间),调用验证接口(GET /api?action=verify)验证 TXT 记录并生成证书
  4. 通过验证接口返回的下载链接,下载证书压缩包
  5. 解压压缩包,获取证书文件并部署到服务器

注意事项

  • 本服务为公益项目,请勿频繁请求或恶意请求,赞助请联系QQ:751667278
  • 证书有效期约 90 天,需定期重新申请更新
  • TXT 记录验证失败时,请检查记录值是否完全一致、DNS 是否全网生效、是否有多余的 TXT 记录